if(! cin ) 是什么意思,有什么作用,应该怎么用
光阴似箭催人老,日月如移越少年。
は std::basic_ios 内の operator bool を定義します:
std::basic_ios
operator bool
そのため、標準 IO ストリームを if (!cin) の形で bool で判定すると、operator bool が呼び出され、返された結果が if の判定条件として使用されます。 そのため、cin 入力ストリームでエラーが発生すると、if (!cin) の条件が true と判断されます。このとき、cin.clear() を呼び出してストリームの状態をリセットし、cin.ignore() を呼び出すことができます。 > を呼び出して入力バッファをクリアし、最後の入力が次の入力に与える影響を排除できます。
if (!cin)
bool
cin
cin.clear()
cin.ignore()
通常、最初のパラメータは 2 番目のパラメータ 'n' のみが実際に有効になるように十分な大きさに設定され、キャリッジ リターンの前の入力文字を入力バッファ ストリームから消去できます。次に、次の入力を読み取ってみます。
cin は入力ストリームであり、!cin は入力ストリームが正常かどうかを判断します。
!cin
は
リーリーstd::basic_ios
内のoperator bool
を定義します:そのため、標準 IO ストリームを
リーリーif (!cin)
の形でbool
で判定すると、operator bool
が呼び出され、返された結果が if の判定条件として使用されます。そのため、
cin
入力ストリームでエラーが発生すると、if (!cin)
の条件が true と判断されます。このとき、cin.clear()
を呼び出してストリームの状態をリセットし、cin.ignore()
を呼び出すことができます。 > を呼び出して入力バッファをクリアし、最後の入力が次の入力に与える影響を排除できます。通常、最初のパラメータは 2 番目のパラメータ 'n' のみが実際に有効になるように十分な大きさに設定され、キャリッジ リターンの前の入力文字を入力バッファ ストリームから消去できます。次に、次の入力を読み取ってみます。
リーリーcin
は入力ストリームであり、!cin
は入力ストリームが正常かどうかを判断します。