c ++给出了所有0的文本文件中的分割错误

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

本文关键字:文本 文件 错误 分割      更新时间:2023-10-16

我正在编写一个非常简单的代码(或者我认为是这样),需要读入 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。 此外,您可能希望关闭输入流:)

你应该确保关闭文件流,你也会从同一个文件读取两次,这就是你得到seg错误的原因。