【发布时间】:2012-10-28 06:09:33
【问题描述】:
我应该编写一个程序,将两个文件中的数字合并并将所有数字写入第三个文件。该程序从两个不同的文件中获取输入,并将其输出写入第三个文件。每个输入文件都包含一个 int 类型的数字列表,按从小到大的顺序排列。程序运行后,输出文件将包含两个输入文件中的所有数字,按从小到大的顺序排列在一个较长的列表中。我不是 100% 确定我的逻辑是正确的。 感谢您的帮助。
输入文件1:
1 2 3 4 5 6 7 8 9 10
输入文件2:
11 12 13 14 15 16 17 18 19 20
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
int main()
{
int num1, num2;
ifstream inputFile;
ifstream inputFile2;
inputFile.open ("input1.txt");
inputFile2.open("input2.txt");
ofstream outputFile;
outputFile.open("output.txt");
inputFile >> num1;
inputFile2 >> num2;
while(inputFile.eof() && inputFile2.eof())
{
if (num1 < num2)
{
outputFile << num1;
inputFile >> num1;
}
else
{
outputFile << num2;
inputFile2 >> num2;
}
}
inputFile.close();
inputFile2.close();
outputFile.close();
return 0;
}
【问题讨论】:
-
您希望
inputFile2.open();完成什么?另外,不要使用while (!eof),使用while (in >> var)。 -
你能解释一下 >> var 的意思吗?我从来没学过。我猜 var 只是我正在使用的变量,但是 'in'?
-
这只是通用的。
in将是输入流,在您的情况下,可能是inputFile或inputFile2。 -
@user1742419 你被教过使用
while (!inputFile.eof())吗? -
这似乎是一个非常常见的错误,听到你被教导如何使用它令人失望。你当然不会知道得更好。您可以在此处阅读以了解为什么它不正确stackoverflow.com/questions/5605125/… 基本上人们似乎使用它,好像
eof()可以判断您是否在文件末尾。但这根本不是它的作用。它会告诉您上次读取是否由于文件结尾而失败。这完全是另一回事。
标签: c++ ifstream file-handling