首页 > 解决方案 > 12小时到24小时时间转换

问题描述

我正在尝试从hackerrank 编写这个c++ 程序,但在我的输出中我得到的只是一个空格。

输入字符串采用HH : MM : SSpp的形式,其中HH是带前导零的两位数的小时,MM是分钟,SS是秒,pp是 AM 或 PM。

#include <bits/stdc++.h>
#include<iostream>
#include<string>

using namespace std;

string timeConversion(string s) 
{
    string p;
    int i,j;
    if(s[8]==80){                   // checking if it is AM or PM
       int x = s[0]*10 + s[1] +12;
       int y = x%10;
       int z = x/10;
       s[0]= z;
       s[1]= y;
       for(i=0;i<10;i++){
           p[i]=s[i];
       }
    }
    string newt= p.substr(0, p.size()-2);      //removing last two characters 
    return newt;
}

int main()
{ 
    ofstream fout(getenv("OUTPUT_PATH"));
    string s;

    getline(cin, s);                

    string result = timeConversion(s);

    fout << result << "\n";
    enter code here
    fout.close();

    return 0;
}

有什么逻辑错误吗?我知道这个问题的另一种方法,但如果有人能帮助我解决这个问题,那就太好了。

标签: c++stringtime

解决方案


问题在于将字符数字(例如s[0])视为整数数字。

如果您确定要处理数字,则对字符进行算术运算的方法是减去 character 的值,如下所示'0's[0] - '0'结果将是整数。


推荐阅读