Что-то странное внутри при попытке проверить данные - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь сделать цикл while, что будет проверять данные! При получении неверных данных следует спросить еще раз. НО, когда неправильные данные получили программу, выполните цикл снова, пропустив cin >> a;

Вот два кода проверки, которые я уже пробовал:

1-й [Рис консоли]

int a;

do
{
  a = NULL;
  cout << "Press some number: ";       
  cin >> a;

} while (a>=0 || a<=0);

2-й: [Рис консоли]

int a;

do
{
  cin.clear();    cin.sync();

  cout << "give me number: ";   cin >> a;

} while (cin.fail());

1 Ответ

0 голосов
/ 10 ноября 2019

Таким образом, вы можете проверить, является ли ввод числом или нет:

int a;
bool flag=false;
while (true)
{
    flag=false;
    std::string input;
    std::cout << "Press some number: ";
    std::getline(std::cin,input);
    try
    {
        a = stoi(input);
    }
    catch(const std::exception& e)
    {
        std::cout <<"Invalid number" << std::endl;
        flag=true;
    }
    if (!flag)
        break;

Есть и другие способы сделать это, но я не связывался с векторами или другими вещами.

...