从文本文件中读取Floats直到超出ifstream作用域c++

Reading Floats from Text file works until out of ifstream scope c++

本文关键字:ifstream 作用域 c++ 文件 文本 读取 Floats      更新时间:2023-10-16

我正试图将一个正好有70x50个数字的文件中的浮点值读入一个2D数组。当我读入文件并在数组中对数据进行排序时,我得到了正确的数字。但是,当我在读取文件后尝试使用数组中的数据时,数据就是胡言乱语。读取文件后,是否需要分配堆内存以保持?代码如下:

int main() {
fstream file("numbers.txt");
if (!file) {
    cerr << "Sample data could not be opened" << endl;
    system("PAUSE");
    exit(1);
}

float data[70][50];
for (int i = 0; i < 70; i++){
    for (int j = 0; j < 50; j++) {
        float n;
        file>> n;
        data[i][j] = n;
        cout << data[i][j];
    }
}
cout << data[70][50];
system("PAUSE");
face.close();
return(0); 
}

此行将产生未定义的行为

cout << data[70][50];

数组的维度为[70][50],这意味着最后一个有效索引为[69][49]

直接回答您的问题:

读取文件后,是否需要分配堆内存以保持?

没有。您的阵列data非常好。如果您在它和cout上循环从[0][0][69][49]的所有值,您会注意到这些值是正确的。

要打印整个数组的全部内容,必须有一个循环——在这种情况下是二维数组——并打印它的每个元素。