我必须编写一个代码,提示用户输入文件名(包含2列整数)。然后程序读取该文件,打印出设置的数字。
我的txt文件看起来像这样(数字用空格分隔):
2 3
5 6
7 8
8 9
5 7
我觉得这很容易,但现在我卡住了。当我运行程序时,出现了这一行
“文件中没有数字。”
我将数字设置为“int”,为什么编译器无法读取数字?但是当我将类型更改为“字符串”时,数字确实显示为O_O,因为我后来还需要计算那些数字的平均值,我不能使用字符串。
这是我的代码,感谢任何帮助TT ___ TT
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
ifstream in_file;
string filename;
int number;
int number1;
cout << "In order to process, please enter the file name: ";
cin >> filename;
in_file.open(filename.c_str());
if (!in_file.is_open())
{
cout << "Cannot open file" << endl;
}
else
{
in_file >> number;
if (in_file.fail())
{
cout << "There're no number in the file." << endl;
}
while (in_file >> number >> number1)
{
cout << number << " " << number1;
}
}
system("pause");
return 0;
}
答案 0 :(得分:1)
逻辑错误:
in_file >> number; // Assigns 2 from first line to number
if (in_file.fail())
{
cout << "There're no number in the file." << endl;
}
while (in_file >> number >> number1) // Assigns 3 to number from first line
// and assigns 5 to number1 from second line
{
cout << number << " " << number1;
}
您只需使用:
while (in_file >> number >> number1)
{
cout << number << " " << number1;
}
如果必须打印“文件中没有数字。”在输出中,您可以使用:
bool gotSomeNumbers = false;
while (in_file >> number >> number1)
{
cout << number << " " << number1;
gotSomeNumbers = true;
}
if (!gotSomeNumbers)
{
cout << "There're no number in the file." << endl;
}
答案 1 :(得分:0)
您用来查找文件是否为空的方法不是 按以下方式更正::一旦执行此行
in_file >> number;
编译器将第一行视为整数整数,即 数字=&#34; 2 3&#34;在给定的情况下。现在这不是标准数字 因为2到3之间的空间和
in_file.fail()
将返回true。正确的方法是使用&#34; eof&#34;功能如下:(我也补充说 如上所述,1-2行计算这些数字的平均值)
参考: When will ofstream::open fail? Checking for an empty file in C++