Reading file, storing in array, error: no match for 'operator>>'

Reading file, storing in array, error: no match for 'operator>>'

我有一个文件 weights01.txt,其中填充了 4x3 矩阵中的浮点数,如下所示

1.1 2.123 3.4
4.5 5 6.5
7 8.1 9
1 2 3.1

我正在尝试读取此文件并将数据传输到名为 newarray 的数组。这是我使用的代码:

int main()
{
  ofstream myfile;
  float newarray[4][3];
  myfile.open ("weights01.txt");
    for(int i = 0 ; i < 4; i++)   // row loop
    {
        for(int j = 0 ; j < 3; j++)  // column loop
        {
            myfile >> newarray[i][j]; // store data in matrix
        }
    }
  myfile.close();
  return 0;
}

我收到行错误

myfile >> newarray[i][j];

错误:'operator>>' 在 'myfile >> newarray[i][j]'

中不匹配

我不明白为什么会出现这个错误

我搜索了以前关于这个“不匹配 'operator>>' 错误的问题,包括 this and . I also read this 关于重载运算符的长期讨论,但我没有找到解释(可能是因为我以前没有使用过文件)并且不要真正关注正在发生的事情。

您不能读取 std::ofstreamout 文件流的缩写),它仅用于输出。 请改用 std::ifstream(即 in 文件流)。

如果您对哪个标准库工具的作用有疑问,请查看您最喜欢的参考资料,例如 cppr


OT备注:可以直接从文件名构造流:

std::ifstream myfile ("weights01.txt");

完成后您不需要 close() 文件,流的析构函数将为您处理。