C++ 如何在C++;

C++ 如何在C++;,c++,c++11,C++,C++11,任务是以HH:MM:SS(例如12:22:03)格式将txt文件“time.in”中的时间加倍,并以相同格式(例如24:44:06)在“time.out”中输出。我无法跳过输入中的“:”字符。这是我的密码: #include <fstream> #include <cmath> #include <stdio.h> using namespace std; int main() { FILE *fin = fopen("time.in", "r"); FIL

任务是以HH:MM:SS(例如12:22:03)格式将txt文件“time.in”中的时间加倍,并以相同格式(例如24:44:06)在“time.out”中输出。我无法跳过输入中的“:”字符。这是我的密码:

#include <fstream>
#include <cmath>
#include <stdio.h>
using namespace std;

int main() {
FILE *fin = fopen("time.in", "r");
FILE *fout = fopen("time.out", "w");
char c;
double hrs, mins, secs;
double fhrs = 0, fmins = 0, fsecs = 0;

ifstream input;
input.open("time.in");
input>> hrs;
c = fgetc(fin); //what should this be? I can't get it to work properly.
input>> mins;
c = fgetc(fin);
input>> secs;
input.close();

fhrs = hrs * 2;
if (secs < 30) {
    fsecs = secs * 2;
    if (mins < 30)
        fmins = mins * 2;
    else {
        fmins = abs(60 - (mins * 2));
        fhrs++;
    }
} else {
    fsecs = abs(60 - (secs * 2));
    fmins++;
    if (mins < 30)
        fmins += mins * 2;
    else {
        fmins += abs(60 - (mins * 2));
        fhrs++;
    }
}

ofstream output;
output.open("time.out");
output << fhrs <<":"<< fmins <<":"<< fsecs <<endl;
output.close();

return 0;
#包括
#包括
#包括
使用名称空间std;
int main(){
文件*fin=fopen(“time.in”,“r”);
FILE*fout=fopen(“time.out”,“w”);
字符c;
双小时,分,秒;
双fhrs=0,fmins=0,fsecs=0;
ifstream输入;
输入。打开(“time.in”);
输入>>小时;
c=fgetc(fin);//这应该是什么?我不能让它正常工作。
输入>>分钟;
c=fgetc(fin);
输入>>秒;
input.close();
fhrs=hrs*2;
如果(秒<30){
fsecs=secs*2;
如果(分钟<30)
Fmin=分钟*2;
否则{
Fmin=绝对值(60-(分钟*2));
fhrs++;
}
}否则{
fsecs=abs(60-(secs*2));
fmins++;
如果(分钟<30)
Fmin+=分钟*2;
否则{
fmins+=abs(60-(分钟*2));
fhrs++;
}
}
流量输出;
输出打开(“超时”);

输出使用C++中的一个文件处理程序或C混合代码>文件>代码>代码> IFSturi一定会引起问题。
ifstream input;
input.open("time.in");
input>> hrs;
input.get();
...
我们应该做到这一点。 如果你想挑剔:

if (input.get() != ':') ... complain about bad input ... 

我们需要更多的细节:当我们有'13:31:31'时我们该怎么办?我们有'26:62:62'吗?我已经整理好了那部分(它以我想要的方式与iostream一起工作),我唯一的问题是来自txt的输入。
stream::get
也许吧?你可以用两种不同的方式打开两次文件。如果你使用file*fin,你可以做
fread(“%2d:%2d:%2d',&hour,&min,&sec);
@Stefan那么,也许我应该提出一个新的更清楚的问题。谢谢你的反馈。谢谢!这个问题解决了!