所以,我必须编写以下程序:
我输入了两个“时钟”,格式为 HH:MM,我必须以分钟为单位检查它们之间的差异并将其输出。然后我必须检查哪个时间具有更大的大小,以分钟为单位,并输出哪个时间更大或者它们是否相等。
所以,我这样做了:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
string a, b, c, d;
int a_min, b_min;
getline(cin, a, ':');
cin >> b;
getline(cin, c, ':');
cin >> d;
a_min = atoi(a.c_str()) * 60 + atoi(b.c_str());
b_min = atoi(c.c_str()) * 60 + atoi(d.c_str());
if (a_min > b_min){
cout << "Razlikata iznesuva " << a_min - b_min << " minuti" << endl;
cout << "Pogolemo e prvoto vreme" << endl;
}
else if (b_min > a_min){
cout << "Razlikata iznesuva " << b_min - a_min << " minuti" << endl;
cout << "Pogolemo e vtoroto vreme" << endl;
}
else if (a_min == b_min){
cout << "Vreminjata se isti" << endl;
}
return 0;
}
但是当你输入 HH:MM 时,我在 HH 和 MM 之间有一个“:”,因此我不能简单地得到数字,所以我需要帮助如何得到小时和分钟并转换它们(转换应该是我猜很简单),或者是否有更好的替代方法?
最佳答案
您应该阅读数字,而不是字符串。读取数字直到非数字,因此将在
处停止:
:char dummy; int hour, minute; cin >> hour >> dummy >> minute; // check dummy == ':'
读取字符串直到出现空格。除非您设置 skipws,否则不会跳过空格.但是有一个函数允许读取字符串直到特定的分隔符:
string hour, minute; getline(cin, hour, ':'); // this will eat the `:` cin >> minute; // assuming whitespace or eof after this // check the values, that you didn't cross eof and such.
关于c++ - 如何删除 : from string and get other elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19496778/