Я пытаюсь взять два отсортированных файла с целыми числами 5000 и объединить их в один файл из 10000 отсортированных int. Я работаю, за исключением случаев, когда программа заканчивает один из файлов, распечатывая остальную часть другого файла.Объединение двух отсортированных файлов с помощью fstream
Вот мой метод, чтобы объединить два файла
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
Я знаю, что есть что-то делать с захватом следующей строки из файла и процедурой моего алгоритма. Любые идеи о том, как я могу это исправить?