一定数の単語だけをベクトルに押し戻そうとしているのですが、
while (cin >> words) {
v1.push_back(words);
}
ループは終了しません。次のステートメントは、すべてを大文字に変換することです。しかし、while ループから抜け出せません。継続的に新しい単語を入力するよう求め続けます。
一定数の単語だけをベクトルに押し戻そうとしているのですが、
while (cin >> words) {
v1.push_back(words);
}
ループは終了しません。次のステートメントは、すべてを大文字に変換することです。しかし、while ループから抜け出せません。継続的に新しい単語を入力するよう求め続けます。
一度にすべてを行うことに夢中にならないでください。今説明したのは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]
。
これを行うためのきちんとした方法は、定数 (例: size_t const MAX_WORDS = 3;
)を定義し、v
十分な要素がまだあるかどうかを確認することです。
while ((v1.size() < MAX_WORDS) && (cin >> words))
{
v1.push_back(words);
}