【发布时间】:2018-12-12 02:59:01
【问题描述】:
如何验证字符串中的最后四位数字是否在 1900 和 2100 的范围内?我什至不需要确切的答案,但至少需要如何检查字符串中的数字。
string getDate()
{
string date = "";
cout << "\nEnter a date in military format (DDMMMYYYY) such as:\n"
<< "-- 13MAR1999 for March 13, 1999\n"
<< "-- 01APR2025 for April 1, 2025\n"
<< "-- Note: year must be between 1900-2100.\n"
<< "Entry --> ";
cin >> date;
while(date.length() > 9 || date.length() < 9)
{
cout << "\nInvalid entry, must be 9 characters.\n";
getDate();
}
if (date[5] < 1 || date[5] > 2)
{
cout << "\nYear must be between 1900-2100.\n";
getDate();
}
return date;
}
【问题讨论】:
-
数字 1 和字符 '1' 之间有很大的区别。他们不是,我重复一遍,是不一样的。您可以从修复代码中的这个错误开始,以便它正确检查 1000-2999 的范围,然后一旦你弄清楚了,弄清楚如何调整对 1000-2100 的检查应该很容易。跨度>
-
尝试在 '1' 和 '2' 周围加上单引号
-
@SamVarshavchik 我不会说它非常很大。
'1'和1之间的差异是 48 :)(在 ascii 编码中) -
你可以使用输入的字符串数据来表示纪元时间,就像这篇文章stackoverflow.com/questions/4137748/…一样。制作 1900 年和 2100 年的纪元时间表示,然后使用您的比较运算符
-
你在这里经常调用,所以要小心!
标签: c++