我的代码有一个问题,涉及如何使用表示时间的字符串数据成员,通过它所包含的冒号数进行处理,然后将其分隔并转换为整数。
目标:取一串时间,以##:##:##:## 的形式表示,用 1 到 3 个冒号分隔,例如 1:13:0:59,然后“切碎”之间的各个部分冒号。
前导日期和小时字段为零可以省略,因此 0:0:0:12、0:0:12 和 0:12 都是“12 秒”可接受的输入形式。“12”是不可接受的。但是,值可能会超过秒、分钟和小时的常规限制。例如, 25:3:90 和 1:1:4:30 。
当我输入 0:01 时,分钟会得到整个值。我不确定另一种分解字符串并从中创建单独整数的方法。
到目前为止,这是我的代码。
struct Times {
int days;
int hours;
int minutes;
int seconds;
string time;
void string_to_ints(string& s);
}
void string_to_ints(string& s) {
// count the amount of colons
for (int i = 0; i < time.length(); i++) {
if (time[i] == ':')
count++;
}
// initialize days hours minutes and seconds
if (count == 3) {
day = time.substr(0, ':');
d = day.size();
hour = time.substr( d+1, ':');
h = hour.size();
min = time.substr( h+1, ':');
m = min.size();
sec = time.substr( m);
ss= time.size();
}
// initialize hours, minutes and seconds
if (count == 2) {
hour = time.substr( 0, ':');
h = hour.size();
min = time.substr( h+1, ':');
m = min.size();
sec = time.substr( m);
ss = time.size();
}
// initialize minutes and seconds
if (count == 1) {
min = time.substr(0, ':');
m = min.size();
sec = time.substr( m );
ss = time.size();
}
// convert the strings to integers
stringstream buffer(sec);
buffer >> seconds;
stringstream buffer2(min);
buffer2>> minutes;
stringstream buffer3(hour);
buffer3 >> hours;
stringstream buffer4(day);
buffer4 >> days;
谢谢您的帮助。