charでファイルcharを読み込み、EOFに達するまでコンソールに出力するはずの関数があります。この関数は、私が望むすべての文字を表示してもうまく動作しますが、それはそのまま続行し、最後には決して停止しません。関数の問題EOF
以下は機能が
の下にリストされているファイルの
void displayAllLines(ifstream &joke)
{
char ch;
joke.clear();
ch = joke.get();
while (ch != EOF)
{
cout << ch;
ch = joke.get();
}
}
内容である "(空白行) Q:?舌が歯に何と言いました"
私が述べたように、それは線がうまく表示されますが、ループは疑問符の後に続きます。
これはどういう考えですか?また、私の質問に適切に答えるために必要な情報が増えていますか?
ファイルで始めるときに教えたのは単なる習慣です。最初にそれにフラグがないことを確認するだけです。あなたはそれが無意味だと思いますか、それともおそらくプログラムに有害だと思いますか? EDIT ::あなたが投稿したコードは確かにプログラムをさらに進めますが、スペース文字は考慮されず、空白のないすべてが表示されます – Podo
また、私のコードが*作業。 – Podo
私はあなたが盲目的に '' clear() ''を呼ぶべきではないと思います。フラグが設定されている場合は、理由があり、クリアするだけでは役に立ちません。あなたのコードは、C++のストリームはCのようにEOFを文字として読み込まないので動作しません。 C++ストリームは、EOFに達するまで文字を読み取ります。 (実際にはEOF文字を返すことはありません - それはCです。) – Phil