0
私は、.cppファイルの中括弧をチェックするプログラムを書いています。プログラムは正常に動作し、構文エラーを見つけ、問題のある行の番号を表示して終了します。入力ファイルの行が最後の行であるかどうかを調べる方法は? C++
しかし、エラーが入力cppファイルの最後の行にある場合は、別のエラーメッセージを表示する必要があります。
私はそれを次のように実装しようとしましたが、間違っていると思います。とにかく動作しません:)
私は完全なコードを教えてくれませんでした。なぜなら、正しい変数を使った単純な条件でこれを解決できると思うからです。必要な場合は、後でコードを投稿することができます。
EDIT:コードの一部が要求通りに与えられます。 counterは、カウンタ++で1行ごとに更新されるint変数です。
for(int i = 0; i < line.length(); i++)
{
if (line[i] == '{')
{
stack.push(current);
}
else if(line[i] == '}')
{
if (!stack.isEmpty())
{
stack.pop(opening);
cout << "Code block: " << opening << " - " << current << "\n";
}
else
{
if(current == inputFile.eof())
{
cout << "Syntax error at the end of the program.";
}
else
{
cout << "Syntax error in line: " << current << "\n";
errorFound == true;
}
}
}
を好きではない場合、完全なコードを知っていいだろうイテレータのバージョンを使用することができます。そうすれば、あなたのコードに対する解決策を見つけることができます(もちろん、[mcve]を作る方がより良いでしょう!)。さて、あなたは 'current'をどのように読むのかを推測することしかできないので、良い解決策は得られません。 – Rakete1111
ファイルの最後を**過去**に読み込もうとしない限り、 'eof'フラグは設定されません。これは、[documentation](http://en.cppreference.com/w/cpp/io/basic_ios/eof)で指摘されています。 –
最後に '\ n'を打つまで最後まで読んだり読んだりすると、' ftell() 'コールがあなたにその位置を与えます。あなたがこのポジションを告げると、あなたは最後のラインにいます。 – Arash