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。另外,您可能想要关闭输入流 :)
你应该确保你关闭了文件流,你也从同一个文件中读取了两次,这就是你遇到段错误的原因
我正在编写一个非常简单的代码(或者我认为如此),它需要读入 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。另外,您可能想要关闭输入流 :)
你应该确保你关闭了文件流,你也从同一个文件中读取了两次,这就是你遇到段错误的原因