c++ - 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;
}
有什么逻辑错误吗?我知道这个问题的另一种方法,但如果有人能帮助我解决这个问题,那就太好了。
解决方案
问题在于将字符数字(例如s[0]
)视为整数数字。
如果您确定要处理数字,则对字符进行算术运算的方法是减去 character 的值,如下所示'0'
:s[0] - '0'
结果将是整数。
推荐阅读
- javascript - 计算平均值的函数和for循环的问题
- firebase - 有没有办法在 Firestore 中添加自定义路径子集合而父文档不为空?
- sql - 将给定的分钟转换为 hh:mm:ss 格式
- python - 如何在python中重新保存具有多个值的字典键?
- javascript - 导致被CSS隐藏的区域通过Javascript淡入
- java - 从字符串中删除重复的单词
- asp.net - ASP.NET Core,如何保护端点免受暴力攻击
- google-sheets - 在过滤器中使用 IMPORTRANGE
- angular - 消息:“createUserWithEmailAndPassword 失败:第一个参数“email”必须是有效字符串。”
- c# - 在 ASP.Net 中将数据从 GridView 批量插入到 postgresql 数据库