ここに質問です。 私はint型のベクトルを持っており、ユーザーは必要な限り要素を入力する必要があります。そして、このベクトルは、何らかの理由でサイズを計算する関数に渡されます。そうする方法はありますか?不明なサイズベクトル入力
std::vector<int> vec;
std::string buffer = "";
std::cout << "Enter numbers. "
<< "After you finish, enter newline" << std::endl;
do {
std::getline(std::cin, buffer);
if (buffer.size() > 0) {
vec.push_back(atoi(buffer.c_str())); //stoi was not declared =(
}
} while (buffer != "");
foo(vec);
....
void foo(std::vector<int> &input)
{
for (const int &i : input)
{
std::cout << i << endl;
}
}
しかし、このコードは正しい方法では機能しません。数字を入力するだけで何もしません。何が間違っているのか分かりません。 あなたがこれ以上入力(またはセンチネル値が入力されるまで)が存在しなくなるまでのベクトルに項目を追加したい場合はstd::istringstream
とoperator >>
の使用量は使用することができ、
「何もしない」とはどういう意味ですか?あなたは何もベクトルにプッシュバックされていないことを意味しますか?問題の 'std :: vector'変数名' vec'と 'input'の間には矛盾があります。 – ArchbishopOfBanterbury
argh、copypaste中に変わるための勇気; 何かを入力する機会が与えられないだけです – Evgeny
ユーザーが数字の代わりに「カエル」を入力するとどうなりますか? –