Необходимо, чтобы пользователь ввел последовательность чисел, не задавая ему размер. При этом в случае если нажата клавиша любой буквы, вывести ошибку
По отдельности это не сложно реализовать, но вместе... Возникают трудности, я новичок в с++
Отдельно цикл записи пользовательского ввода:
string str;
while (cin >> str)
{
vec.push_back(stoi(str));
}
В случае если нажата буква:
char key;
if (_kbhit())
{
key = _getch();
if (isalpha(key))
break; // если в цикле
}
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Ну так напишите где то так
std::vector<int> vec;
std::string str;
while (std::cin >> str)
{
try {
int n = stoi(str);
vec.push_back(n);
} catch(...) {
std::cout << "ooops\n";
break;
}
}
если же по какой то причине нельзя пользоваться исключениями (преподаватель их в школе не изучал), тогда перепишем так
std::vector<int> vec;
std::string str;
while (std::cin >> str)
{
bool all_digit = true;
for (int i = 0; i < str.length(); i++) {
if (str[i] <= '0' || str[i] >= '9') {
all_digit = false;
break;
}
}
if (all_digit )
vec.push_back(stoi(str));
else {
std::cout << "oops\n";
}
}
конечно, проверку лучше вынести в отдельную функцию, воспользоваться is_digit, но это уже самостоятельно.