我正在尝试获取两个已排序的文件,每个文件包含 5000 个整数,并将它们组合成一个包含 10000 个已排序整数的文件。我让它工作,除非程序完成一个文件,打印出另一个文件的其余部分。
这是我合并两个文件的方法
void mergeFiles(string inFile1, string inFile2, string outFile) {
ifstream fin(inFile1);
ifstream fin2(inFile2);
ofstream fout(outFile);
string line;
int i = 1;
int in2 = 0, in1 = 0;
if(fin) {
getline(fin,line);
in1 = atoi(line.c_str());
}
if(fin2) {
getline(fin2,line);
in2 = atoi(line.c_str());
}
bool first = true;
while(fin || fin2) {
if(fin && fin2) {
if(in2 <= in1) {
fout << i++ << ": " << in2 << endl;
getline(fin2, line);
in2 = atoi(line.c_str());
}
else {
fout << i++ << ": " << in1 << endl;
getline(fin, line);
in1 = atoi(line.c_str());
}
}
else {
// This is the part giving me trouble
// Code Snippets below go here
}
}
}
取决于我使用这个:
fout << i++ << ": " << line << endl;
if(fin)
getline(fin, line);
else if(fin2)
getline(fin2, line);
我的输出文件的最后 5 行如下所示:
9996: 99933
9997: 99943
9998: 99947
9999: 99947
10000: 99993
或者
if(fin)
getline(fin, line);
else if(fin2)
getline(fin2, line);
fout << i++ << ": " << line << endl;
我文件的最后 5 行如下所示:
9996: 99933
9997: 99943
9998: 99947
9999: 99993
10000: 99993
我文件的最后 5 行应该是这样的:
9996: 99933
9997: 99943
9998: 99947
9999: 99957
10000: 99993
我知道这与从文件中获取下一行和我的算法过程有关。关于如何修复它的任何想法?