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);
}

私の理解から、ファイルの終わりまで私を1つ増やす必要がありますよね?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 に答える