0

一定数の単語だけをベクトルに押し戻そうとしているのですが、

while (cin >> words) {
        v1.push_back(words);
    }

ループは終了しません。次のステートメントは、すべてを大文字に変換することです。しかし、while ループから抜け出せません。継続的に新しい単語を入力するよう求め続けます。

4

2 に答える 2

1

一度にすべてを行うことに夢中にならないでください。今説明したのはforループです。入力を必要な回数だけ、push_back()反復ごとに読み取ります。forループが条件に達すると、ループは期待どおりに終了します。

// Here I create a loop control (myInt), but it could be a variable
// from anywhere else in the code. Often it is helpful to ensure you'll 
// always have a non-negative number. This can done with the size_t type.
for(std::size_t myInt = 0; myInt < someCondition; ++myInt)
{
    // read the input
    // push it back
}

=> のようにループ制御をインデックスとして for ループを使用する場合、C/C++ はゼロベースのコンテナーを使用することを思い出してくださいmyContainer[myInt]

于 2013-06-22T05:51:02.867 に答える
0

これを行うためのきちんとした方法は、定数 (例: size_t const MAX_WORDS = 3; )を定義し、v十分な要素がまだあるかどうかを確認することです。

while ((v1.size() < MAX_WORDS) && (cin >> words))
{
    v1.push_back(words);
}
于 2013-06-22T06:30:18.553 に答える