コードに問題があり、時間を表す文字列データ メンバーを取得し、それが保持するコロンの数で処理し、区切り、整数に変換する方法が関係しています。
目標: 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;
助けてくれてありがとう。