对于我的情况,我还需要以 HH:MM:SS 格式输入时间。我':'
通过将其用作getline()
函数的分隔符来解决该输入。我在这里附上了那部分代码。
const char delim = ':';
string hr_s, min_s, sec_s;
int hr, min, sec;
cout << "Enter HH:MM:SS : " << endl;
std::getline(cin, hr_s, delim);
std::getline(cin, min_s, delim);
std::getline(cin, sec_s);
hr = stoi(hr_s);
min = stoi(min_s);
sec = stoi(sec_s);
if ((hr_s.length() == 2) && (min_s.length() == 2) && (sec_s.length() == 2)&& (isValidTime(hr, min, sec)))
{
cout << "Good Time Format" << endl;
}
else
{
cout << "Bad Time format input"<< endl;
}
检查输入数字有效性的方法:
bool isValidTime(int hr, int min, int sec)
{return (((hr >= 0) && (hr < 24)) &&
((min >= 0) && (min < 60)) &&
((sec >= 0) && (sec< 60)));}
注意:此代码无效,除非用户输入其他字符而不是':'
. 对于其他情况应该没问题。我不确定我是否回答了你的问题,但我希望这会有所帮助。