我正在尝试为课程编写一个程序,我们必须花费用户时间(出发地+到达时间),然后输出用户写入控制台的任何内容。我正在使用do while循环。我正在使用if语句来验证属性输入。当我每次运行程序时,它只是一遍又一遍地询问到达时间。我需要根据用户输入的内容追加“am”或“pm”,这就是为什么有两个值的char数组的原因。请帮忙
char ampm1[2];
// char ampm = 'p';
int temp;
do
{
cout << "Please enter your arrival time in the following format: '10:30'. This IS NOT MILITARY TIME.";
cin >> temp;
arrival_hour = temp / 100;
arrival_min = temp % 100;
cout << "Is this AM or PM?";
cin >> ampm1;
}
while (arrival_hour > 12 || arrival_hour < 0 || departure_min >= 60);
cout << "Your arrival time is: " << setfill('0') << setw(2) << arrival_hour << ":" << setfill('0') << setw(2)
<< arrival_min << ampm1;
我在您的代码段中发现的一些问题:
1)ampm1是一个大小为2的字符数组,虽然你想存储“am”或“pm”,技术上需要2 + 1 = 3个字节(空终止符为1个字节)。这将导致意外的字符串行为,并且使用不正确。
2)您已将temp指定为整数,并且您希望输入格式为:HH:MM。这又是不正确的。您可以做的是将输入作为字符串获取并将其分隔为“:”。接下来,您可以使用atoi()将HH和MM转换为整数组件。