0

这给了我一个分段错误:

for (int i=0; !file.eof();i++)
{
  getline(file,line);
  roughInput.lines[i].split(line);
}

而这并没有

for (int i=0; i<2;i++)
{
  getline(file,line);
  roughInput.lines[i].split(line);
}

根据我的理解,应该将 i 加一直到文件结束,对吗?由于我在 i-net 上找不到太多示例,有没有更好的解决方案?

4

1 回答 1

2

您的循环可能运行了太多次。 file.eof()直到您在文件末尾尝试阅读之后才会返回 false。您可能希望在getline调用和之间进行检查split

    getline(file, line);
    if (!file.eof())
        roughInput.lines[i].split(line);

并相应地修复循环逻辑。

但是,更好的解决方案是roughInput.lines动态增长,这样如果文件比您预期的长,您就不会出现段错误。

于 2011-01-12T19:10:51.620 回答