Я создаю программу, которая читает текстовые файлы, содержащие список чисел. Эти списки содержат ряд отсортированных чисел, каждый из которых может содержать различное количество значений. Например, файл 1 может иметь список из 2 чисел, а файл 2 может иметь список из 20.
Смысл программы заключается в том, чтобы читать каждый из этих текстовых файлов (которые содержат числа в порядке возрастания) построчно, а затем помещать их в новый текстовый файл в порядке возрастания. Однако, если один список действительно короткий, то я получу ошибку eof()
, из-за которой программа чтения файлов перейдет в состояние сбоя, что не позволит ему прочитать оставшиеся значения в более длинном текстовом файле.
Вот мой код, который перебирает два текстовых файла:
int main() {
int numbers1 = 0, numbers2 = 0, fillCounter = 0, iteration = 0;
char grabNext = 'b';
ifstream file1, file2, fileFiller;
ofstream fout;
file1.open("numbers1.txt");
file2.open("numbers2.txt");
fout.open("output.txt");
//Check and see if the opening operation was successful
if (file1.fail() || file2.fail()) {
cout << "The progran could not open the related necessary files. Check and see if they exist!"
<< endl;
exit(1);
}
do {
//In theory, whenever the file1 gives an eof, I should be able to iterate over the remaining lines of file2
if (file1.eof()) {
do {
fout << numbers2 << endl;
} while(!file2.eof());
break;
}
//In theory, whenever the file2 gives an eof, I should be able to iterate over the remaining lines of file1
if (file2.eof()) {
do {
fout << numbers1 << endl;
break;
} while(!file1.eof());
break;
}
if (grabNext == 'b') {
file1 >> numbers1;
file2 >> numbers2;
} else if (grabNext == 'l') {
file1 >> numbers1;
} else if (grabNext == 'u') {
file2 >> numbers2;
}
cout << numbers1 << " " << numbers2 << endl;
if (numbers1 < numbers2) {
fout << numbers1 << endl;
grabNext = 'l';
} else if (numbers1 > numbers2) {
fout << numbers2 << endl;
grabNext = 'u';
}
iteration++;
} while(true);
}
Вот пример текстового файла 1:
-1
3
5
7
9
Вот пример текстового файла 2:
2
4
10
12
16
Мой вопрос заключается в том, что после того, как я достигну eof()
из одного файла, я смогу продолжить чтение другого, пока тот не достигнет eof()
?
Я искал везде без удачи.
Спасибо за ваше время.