1

我正在尝试使用 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

我找不到错误在哪里。你能帮助我吗?

4

1 回答 1

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;

于 2012-12-15T14:15:41.880 回答