это вопрос. У меня есть вектор ints, и пользователь должен вводить его элементы до тех пор, пока он или она этого захочет. Затем этот вектор передается функции, которая вычисляет ее по какой-либо причине. Есть ли способ сделать это? Я нашел код на берегу Интернет:Неизвестный размер векторный ввод
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;
}
}
Но этот код не работает в правильном направлении: Я выбираю входящие номера, и он просто ничего не делает. Не знаю, что с этим не так. (C++ 11 включен)
Что вы подразумеваете под "он ничего не делает"? Вы имеете в виду, что ничто не возвращается к вектору? Кстати, между «std :: vector» есть переменные «vec» и «input» в вопросе. – ArchbishopOfBanterbury
argh, подлежит изменению при копировании; Это просто не дает мне даже шанса что-то ввести – Evgeny
Что происходит, когда пользователь вводит «лягушку» вместо числа? –