[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
2022-01-27 19:04:07
質問
次の2つのループの違いと、それぞれのループが停止するタイミングは?
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
int x,y;
while(cin >> x){
// code
}
while(cin){
cin >> y;
//code
}
return 0;
}
解決方法は?
これらを個別に見てみましょう。
while (cin >> x) {
// code
}
このループは、直感的には
cin
を
x
でない値が読み込まれるとすぐに、ループを開始します。
int
または
cin
が閉じられると、ループは終了します。つまり、このループが実行されるのは
x
が有効であることを示します。
一方、このループを考えてみましょう。
while (cin){
cin >> y;
// code
}
ステートメント
while (cin)
に対するこれまでのすべての操作が完了するまでの間」という意味です。
cin
ループに入ったら、値を
y
. これは成功するかもしれませんし、失敗するかもしれません。しかし、どちらであっても、ループは実行され続けます。つまり、無効なデータが入力されたり、読み込むべきデータがなくなったりすると、ループはもう一度、古い値である
y
そのため、必要以上にループを繰り返すことになります。
このループの最初のバージョンは、2番目のバージョンよりも絶対に好きなはずです。 有効なデータがない限り、決して繰り返しを実行しないからです。
お役に立てれば幸いです。
関連
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] g++とgccの違いは何ですか?
-
[解決済み] floatとdoubleの違いは何ですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較