Этот код предназначен для домашнего задания для моего класса программирования. Я должен ввести время в формате HH: MM AM или HH: PM PM и преобразовать его в военное время.Функция ничего не возвращает
Мой профессор хочет, чтобы мы записали код так, чтобы AM и PM были прочитаны независимо от случая (Am, pM, am, PM все приемлемы). Функция преобразования должна принимать стандартное время как строковый параметр, преобразовывать время в четырехзначный формат военного времени (EX 1:10 AM должно быть 0110 часов, 5:05 вечера должно быть 1705 часов и т. Д.) И верните строку нового военного времени в основную функцию, чтобы основная функция могла записать ее на выходе.
Я больше не получаю никаких ошибок, но кажется, что когда я запускаю программу, ничто не записывает мою переменную mtime. Моя продукция просто «Соответствующее военное время - это часы». Может ли кто-нибудь помочь мне узнать, почему моя функция конверсии не возвращает военные часы?
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
string to24Hour(string);
int main()
{
string stime, mtime;
cout << "Enter time: ";
getline (cin, stime);
mtime = to24Hour(stime);
cout << "Corresponding military time is " << mtime << " hours.";
return 0;
}
string to24Hour(string time)
{
string hour, minute, period, mtime;
int colon, space;
colon = time.find(":");
space = time.find(" ");
hour = time.substr(0, colon);
int ih = stoi(hour);
minute = time.substr(colon + 1, space);
period = time.substr(space + 1);
period = toupper(period[0]) + toupper(period[1]);
if (period == "AM")
{
if (ih = 12)
mtime = "00" + minute;
else if (ih < 10)
mtime = "0" + hour + minute;
else
mtime = hour + minute;
return mtime;
}
if (period == "PM")
{
if (ih < 12)
{
ih = ih + 12;
hour = to_string(ih);
mtime = hour + minute;
}
else
mtime = "12" + minute;
return mtime;
}
}
Ваш код анализа даты очень хрупкий, вы уверены, что не можете использовать регулярные выражения? – Dai
Также ... ** использовать отладчик! ** – Dai
'if (ih = 12)' => 'if (ih == 12)' –