我正在编写一个非常简单的代码(或者我认为)需要读入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作为输入?有没有人对如何使这个工作有任何想法?
提前致谢!
答案 0 :(得分:2)
对于第二个while循环,你想要:
while ( Min >> value ) {
M.push_back(value);
}
你得到了分段错误,因为Ein击中了EOF。此外,您可能希望关闭输入流:)
答案 1 :(得分:2)
您应确保关闭文件流,同时还要从同一文件中读取两次,这就是您获取seg错误的原因