0

行に応じて特定の機能を実行するFileReader関数に取り組んでいます。

しかし、私が読みたいファイルの最後の行は、何らかの理由で常に空白であり、それは私のプログラムを台無しにします。

その時点で停止するようにプログラムに指示する方法はありますか?

実行しようとすると、次の出力が得られます

プログラムの開始:'std :: out_of_range'のインスタンスをスローした後に呼び出された終了what():basic_string :: substr ---11中止

そして、各行で特定の要素を取得するようにプログラムに指示し、それらの要素がその行でnullであるため、その空白行が原因であることを私は知っています。

4

1 に答える 1

1

私が理解していることから、あなたはこのようなものを持っています:

std::ifstream file("file.txt");
std::string line;
while(getline(file,line)) {
  //read the line
}

また、ファイルの最後に、次のような2つの改行があることを収集します(間違っている場合は修正してください)。

line1\nline2\n\n

この場合、whileループ本体は確実に最後の1行の空の行で実行されます。これを回避するには、空の行を無視してください。

while(getline(file,line)) {
  if (line == "") continue;
  //read the line
}

これがうまくいかない場合は、私があなたの質問を誤解したためです。この場合、もう少し詳しく説明してください。

于 2013-02-25T05:32:35.743 に答える