Requirements:
给定以AM/PM结尾的12小时制的时间,将其转换为24小时制。
PS:12:00:00AM 转换为00:00:00,其他的AM结尾的将AM扔掉,以PM结尾的若小时不等于12,则将其加上12后再输出
SourceCode:
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
string timeConversion(string s)
{
//获取小时数
string tmptime(s);
int h_time = 0;
tmptime.replace(2, s.length(), "");
stringstream stream(tmptime);
stream >> h_time;
//处理以AM结尾
if (s.find("AM") != string::npos)
{
s.replace(s.length() - 2, 2, "");
if (h_time == 12)
s.replace(0, 2, "00");
}
//处理以PM结尾
if (s.find("PM") != string::npos)
{
s.replace(s.length() - 2, 2, "");
if (h_time != 12)
h_time += 12;
stringstream intstream;
intstream << h_time;
intstream >> tmptime;
s.replace(0, 2, tmptime);
}
return s;
}
void main()
{
string s;
cin >> s;
cout << timeConversion(s) << endl;
system("pause");
}
PS:
以“”替换字符串的部分,也可以用erase()代替,erase()函数原型为:
string& erase ( size_t pos = 0, size_t n = npos );
iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
该problem中还涉及到字符串与数之间的转换。