Обработка пользовательского ввода С++

230
26 июня 2022, 09:00

При обработке пользовательского вода никак не могу сделать проверку на ввод. Вот, например, таким образом я запрещаю ввод символов и разрешаю ввод от 1 до 10, но при вводе цифр больше 10 или любого другого числа у меня происходит завершение программы. На выходе мне нужно именно int значение (сейчас пробую, но пока не получается что-то никак).

#include <iostream>
using namespace std;
int main() {
int x=0;
    while (!(cin >> x))
        {
            cin.clear();
            while (cin.get() != '\n');
            cout << "\tWrong digit try again!\n";
            cout << "\tEnter the second coordinate for the shot: ";
        }
result 0;
}
Answer 1

Я не понимаю при чем тут ваш код к условию.

Если хотите получить число из введенной строки, просто считайте строку, а затем используйте std::atoi для получения целочисленного числа из строки.

Если хотите проверять введенный символ - используйте функцию isdigit.

READ ALSO
Какой способ IO использовать?

Какой способ IO использовать?

Какой способ ввода-вывода использовать в современном коде? Насколько я понимаю, в стандартной библиотеке есть 3 способа: C-подобный, C++-потоки,...

223
Почему read() принимает количество байт с помощью знакового типа?

Почему read() принимает количество байт с помощью знакового типа?

std::ifstream::read(char_type*, std::streamsize) принимает количество читаемых байт с помощью знакового типа std::streamsize, а std::fread(void*, std::size_t, std::size_t, std::FILE*) -- с помощью...

135
Как исправить проблему с подключением bass dll к c++ builder?

Как исправить проблему с подключением bass dll к c++ builder?

Пытаюсь подключить bass dll к проекту в c++ builderСкачал архив с

194
C++ Таблица умножения

C++ Таблица умножения

Нужно сделать таблицу 12x12 , почему выводит только первую строку ? Если я сделал вложенный цикл?

221