我坚持使用这个程序,任何人都可以帮助将12小时格式转换为24小时格式吗?
#include <bits/stdc++.h>
using namespace std;
string timeConversion(string s) {
// Complete this function
string d,c;
d=s.substr(8,2);
if(d=="PM"){
int a;
a=stoi(s.substr(0,2));
a=a+12;
c=to_string(a);
}
s[0]=c[0];
s[1]=c[1];
s=s.substr(0,8);
return s;
}
int main() {
string s;
cin >> s;
string result = timeConversion(s);
cout << result << endl;
return 0;
}
Sample Input: 7:05:45PM
Sample Output: 19:05:45
现在我编辑了我的代码并且它正在运行,但是你能告诉我更好的方法来执行这段代码吗?
答案 0 :(得分:0)
有更好的方法可以做到这一点,但我将使用您制作的代码。
注意:我删除了#include <bits/stdc++.h>
库
#include <iostream>
#include <stdlib.h>
using namespace std;
string timeConversion(string s)
{
string a = s.substr(0,2); //hours
string b = s.substr(3,2); //minutes
string c = s.substr(6,2); //seconds
string d = s.substr(8,2); //AM or PM
int hours = atoi(a.c_str());
if (d == "PM")
hours += 12; //If it is PM just add 12 hours to the time
string temp;
if (hours == 0)
temp = "00";
else
temp = to_string(hours);
temp += ":" + b + ":" + c; //concat the strings
return temp ;
}
int main()
{
string s;
cin >> s;
string result = timeConversion(s);
cout << result << endl;
return 0;
}
答案 1 :(得分:0)
我想这是最初学友好的c ++方式。
#include<sstream>
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
string timeConversion(string s) {
istringstream is(s);
int hours;
int minutes;
int seconds;
string ampm;
char colon;
is >> hours >> colon >> minutes >> colon >> seconds >> ampm;
if(is.fail()) {
return "Error: wrong format";
}
ostringstream os;
if(ampm == "PM") {
hours += 12;
}
os
<< setfill('0') << setw(2)
<< hours << ':'
<< setfill('0') << setw(2)
<< minutes << ':'
<< setfill('0') << setw(2)
<< seconds;
return os.str();
}
int main() {
string s = "7:05:05PM";
cout << timeConversion(s) << '\n';
return 0;
}
注意:
istringstream
和ostringstream
与cin
和cout
类似,但对字符串而不是输入/输出进行操作。
<< setfill('0') << setw(2)
- &gt;如果任何小时分钟或秒只有一位数,则此部分使其打印07
而不是7
我没有处理有效的边缘情况,如12:00:01 PM或12:00:01 AM。
我还没有完成错误条件,输入格式正确,但数据错误,例如分钟不应超过60。
我认为你可以改善那些情况。