【发布时间】:2019-02-09 11:16:53
【问题描述】:
我正在尝试从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;
}
有什么逻辑错误吗?我知道解决这个问题的另一种方法,但如果有人能帮助我解决这个问题,那就太好了。
【问题讨论】:
-
getenv("OUTPUT_PATH"));,那个环境变量是你设置的吗?就像在您运行此程序的终端中一样? -
您将数字与数字混淆了。
'1' * 10不是 10;使用 ASCII 编码是 490。 -
@melpomene 是的,这是真的。但这与 OP 的具体问题有关吗?
-
@JoeyMallone 好问题!你是对的:这是有风险的;并且文件被打开,并且没有检查这是否成功。但是,如果您将所有内容都输出到 cout,则 OP 的结果是相同的 ;-)