Например, пользователь вводит два ввода вместо одного, как мне определить это и вывести сообщение об ошибке?
Пользователь вводит два входа, где?
В командной строке?
Проверьте argc
, который является числом аргументов, переданных приложению при вызове.
int main(int argc, char** argv) {
// argc will always at least be 1,
// since the program name is always passed
if (argc > 3)
...
}
Если вы говорите о проверке ввода в другом месте во время выполнения, это, как говорят другие комментарии, зависит от того, какой метод вы используете для чтения входных данных. Трудно предложить подход, если мы этого не знаем.
Вот идея, основанная на вашем примере, который вы дали в своем комментарии:
std::string str;
// take everything from stdin up to the next newline
std::getline(std::cin, str);
Теперь у вас есть вся входная строка. Вы можете разбить строку на пробелы (много примеров этого здесь, на StackOverflow) и убедитесь, что вы проанализировали только одно слово. Это всего лишь пример, и он не обязательно оптимален, но он должен указывать вам правильное направление.
Вы также можете использовать istringstream
и просто разобрать первое слово и отбросить остальные, модификация, сделанная на этот пример StackOverflow.
Других решений пока нет …