我正在尝试使用C ++从文本文件中读取一些数据。但是它会在控制台上打印奇怪的数字。
我的输入文件完全相同:
3 6
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 0 1 0
然后我编写了非常简单的代码,如:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc , char* argv[]) {
ifstream fin(argv[1]);
int grid_i;
int grid_j;
fin>>grid_i;
fin>>grid_j;
cout <<grid_i<<endl;
cout <<grid_j<<endl;
return 0;
}
然后输出是:
8
1875681984
我无法找到错误的位置。你能救我吗?
答案 0 :(得分:0)
检查文件是否已成功打开以及是否已准备好阅读:
ifstream fin(argv[1]);
if (!fin.good()) {
cout << "Couldn't open the file.\n";
return 1;
}
始终检查阅读操作是否成功也是一个好主意。 operator>>
返回对流的引用,该流可以转换为bool,因此您可以像这样使用它:
if (fin >> grid_i) {
// read succeeded, use grid_i
}
您的程序实际上可能会导致未定义的行为。打开流(以及随后从中读取)失败时,grid_i
和grid_j
永远不会被初始化/分配。根据定义,读取具有不确定值的对象是未定义的行为。始终初始化对象是一种很好的做法
int grid_i = 0;