Необходимо, чтобы пользователь ввел последовательность чисел, не задавая ему размер. При этом в случае если нажата клавиша любой буквы, вывести ошибку

По отдельности это не сложно реализовать, но вместе... Возникают трудности, я новичок в с++

Отдельно цикл записи пользовательского ввода:

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, но это уже самостоятельно.

→ Ссылка