0

エラーが発生したコード行は次のとおりです。これは2008年の私の本にあります。std::cin.get(std::cin.rdbuff()->in_avail()+1);

誰かがそれが何を意味し、なぜそれが私にエラーを与えるのか教えてもらえますか?

In function 'int main()':|7|error: 'struct std::istream' has no member named 'rdbuff'|
||=== Build finished: 1 errors, 0 warnings ===|

- アップデート -

rdbuffをrdbufに変更すると、次のエラーがスローされます。

walkthrough.cpp|7|error: no matching function for call to 'std::basic_istream<char, std::char_traits<char> >::get(std::streamsize)'|
4

2 に答える 2

4

ライブラリ参照をざっと見ただけで簡単にわかるように、メンバ関数はrdbuf(), oneと呼ばれます。f

つまり、エラーは、istreamという名前のメンバーがありませんrdbuff

于 2011-11-15T11:48:15.437 に答える
2

Kerrek SB は既にエラーの理由をあなたに伝えました: それはrdbufであり、 ではありませんrdbuff

このコードが何をしようとしているのか: ブロック読み取りを強制しようとしています (つまり、そのステートメントに到達する前に入力された未読のものがあったとしても、ユーザーが何かを入力するのをプログラムに強制的に待機させようとします)。in_avail「利用可能な」文字数、つまり、ブロックせずに、つまりプログラムがユーザーの入力を待たずに読み取ることができることが保証されている文字数を示します。

ただし、次の文字の読み取りがブロックされるという保証がないため、そのコード行は多少見当違いです。そのため、一部のシステムでは、この行がまだユーザー入力を待機していない場合があります。

その場合でも、入力ストリームには通常、最初の文字が削除された行が残りますが、残りは利用可能であり、最初に空の行ではなかった場合、その後の読み取りで驚くべき結果が得られる可能性があります。

于 2011-11-15T12:10:17.650 に答える