如何使CIN只取数字

如何使CIN只取数字

这是代码

double enter_number(){
  double number;
  while(1)
  {

        cin>>number;
        if(cin.fail())
        {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "Invalid input " << endl;
        }
        else
        break;
        cout<<"Try again"<<endl;
  }
  return number;}

我的问题是,当我输入类似于1x的内容时,就会将1作为输入,而不会注意到在另一次运行中遗漏的字符。有没有办法使它与任何实数(如1.8)一起工作?


慕莱坞森
浏览 724回答 3
3回答

守候你守候我

它冲过缓冲器。您还可以在使用CIN和getline时使用它,同时将输入作为CIN离开缓冲区中的‘\n’,并且不删除(我相信,不完全确定,可能是cin.get),所以getline在遇到‘\n’之后,只要附加到输入缓冲区,就会被分隔。
打开App,查看更多内容
随时随地看视频慕课网APP