ホームページ > バックエンド開発 > C++ > ユーザー入力をベクトルに保存するときに最初の数値だけがカウントされるのはなぜですか?

ユーザー入力をベクトルに保存するときに最初の数値だけがカウントされるのはなぜですか?

Patricia Arquette
リリース: 2024-10-26 12:01:29
オリジナル
583 人が閲覧しました

Why is only the first number being counted when storing user input into a vector?

ベクトルへのユーザー入力の保存: 総合ガイド

この問い合わせでは、ユーザーはベクトルに複数の数値を入力しようとしています。その後、関数呼び出しを使用してそれらをカウントします。以下に示すコードは、最初の数値のみがカウントされるという問題を示しています。

<code class="cpp">template <typename T>
void write_vector(const vector<T>&amp; V)
{
   cout << "The numbers in the vector are: " << endl;
  for(int i=0; i < V.size(); i++)
    cout << V[i] << " ";
}

int main()
{
  int input;
  vector<int> V;
  cout << "Enter your numbers to be evaluated: " << endl;
  cin >> input;
  V.push_back(input);
  write_vector(V);
  return 0;
}</code>
ログイン後にコピー

原因は、現在ユーザーから 1 つの整数のみが読み取られているという事実にあります。これを解決するには、ループが必要です。

<code class="cpp">while (cin >> input)
    V.push_back(input);</code>
ログイン後にコピー

このループは、使用可能な入力がなくなるまで、標準入力から整数を継続的に取得します。入力プロセスは、cin がファイルの終わり (EOF) を検出するか、非整数値に遭遇すると終了します。

代わりにセンチネル値を使用することもできますが、これにはユーザーがその特定の値を入力できなくなるという欠点があります。 。例:

<code class="cpp">while ((cin >> input) && input != 9999)
    V.push_back(input);</code>
ログイン後にコピー

このシナリオでは、ユーザーが 9999 を入力する (または cin を無効にする別の条件をトリガーする) まで入力が収集され、その後ループが終了します。

以上がユーザー入力をベクトルに保存するときに最初の数値だけがカウントされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート