c ++从所有0的文本文件中提供Segmentation Fault

时间:2015-06-17 17:44:08

标签: c++ text zero fault

我正在编写一个非常简单的代码(或者我认为)需要读入2个文本文件。其中一个充满了一堆数据点(类型为double),另一个恰好是一堆0的(这只是有时填充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作为输入?有没有人对如何使这个工作有任何想法?

提前致谢!

2 个答案:

答案 0 :(得分:2)

对于第二个while循环,你想要:

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

你得到了分段错误,因为Ein击中了EOF。此外,您可能希望关闭输入流:)

答案 1 :(得分:2)

您应确保关闭文件流,同时还要从同一文件中读取两次,这就是您获取seg错误的原因