c ++从全0的文本文件中给出分段错误

c++ gives Segmentation Fault from text file of all 0's

我正在编写一个非常简单的代码(或者我认为如此),它需要读入 2 个文本文件。一个充满了一堆数据点(双精度类型),另一个恰好是一堆 0(这只是有时用 0 填充,有时它会是其他数字,所以我需要它同时适用于 0 和非零)像这样:

0
0
0
..

我正在将这些读入向量,如下所示:

vector <double> E;
vector <double> M;
ifstream Ein("E.txt");
ifstream Min("M.txt");

while ( Ein >> value ) {
        E.push_back(value);
    }

     while ( Ein >> value ) {
        M.push_back(value);
    }

在我注释掉 M 向量后,这对向量 E(具有实际值的向量)非常有效。但是每当我包含 M 向量(全为 0)时,当我 运行 程序时我会遇到分段错误。

我猜这意味着 C++ 不理解 0 作为输入?有人对如何让它发挥作用有任何想法吗?

提前致谢!

对于第二个 while 循环,您是否想要:

while ( Min >> value ) {
   M.push_back(value);
}

您遇到了分段错误,因为 Ein 已达到 EOF。另外,您可能想要关闭输入流 :)

你应该确保你关闭了文件流,你也从同一个文件中读取了两次,这就是你遇到段错误的原因