从文本文件中读取Floats直到超出ifstream作用域c++
Reading Floats from Text file works until out of ifstream scope c++
我正试图将一个正好有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]
的所有值,您会注意到这些值是正确的。
要打印整个数组的全部内容,必须有一个循环——在这种情况下是二维数组——并打印它的每个元素。
相关文章:
- 未在作用域中声明unordered_map
- 有没有一种方法可以在编译时获得作用域类名
- C++quit()函数中可能存在作用域问题
- 未在此作用域OpenCV3.4中声明cvSaveImage
- 全局作用域中函数指针的赋值
- 在类函数中初始化外部作用域变量
- 不同作用域中的静态变量和全局变量
- 是同一作用域的函数部分中的函数调用
- 未在此作用域中声明的函数和变量 (C++)
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 将作用域枚举转换为基础类型
- 表达式必须具有完整或无作用域的枚举图
- 在构造函数中输入对象时C++类成员作用域
- 无法让"std::enable_if"适用于无作用域枚举
- 为什么不能直接引用作用域枚举类成员,而不能为无作用域枚举生成类成员?
- 函数未在作用域中声明 / 如何结合使用 header.h、header.cpp 和 main.cpp?
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 如何在C++中访问作用域的变量输出?
- 重载时未在 C++ 的作用域错误中声明
- 从文本文件中读取Floats直到超出ifstream作用域c++