Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当stoi收到错误的输入时,这段代码不会阻止它运行_C++ - Fatal编程技术网

C++ 当stoi收到错误的输入时,这段代码不会阻止它运行

C++ 当stoi收到错误的输入时,这段代码不会阻止它运行,c++,C++,我被这段代码卡住了。如果用户输入不是数字,我将尝试重新启动此代码段。它似乎没有这样做,我不知道为什么。如果有人能帮我一把,我将不胜感激。对不起,开始和结束行缩进,这让我发疯 void write() { string x, y; int x1 = 0, y1 = 0, no = 0; /*highNumber (x1, y1);*/ cout << endl << " x to display: "; cin >> x; c

我被这段代码卡住了。如果用户输入不是数字,我将尝试重新启动此代码段。它似乎没有这样做,我不知道为什么。如果有人能帮我一把,我将不胜感激。对不起,开始和结束行缩进,这让我发疯

void write() {
  string x, y;    
  int x1 = 0, y1 = 0, no = 0;

  /*highNumber (x1, y1);*/

  cout << endl << " x to display: ";
  cin >> x;
  cout << endl << " y to display: ";
  cin >> y;

  for (int i = 0; i < x.length(); i++) {
    if (x[i] >= '0' || x[i] <= '9') {
      no++;
    }
  }

  if (no == x.length()) {
    no = 0;
  }
  else {
    write();
  }

  for (int i = 0; i < x.length(); i++) {
    if (y[i] >= '0' || y[i] <= '9') {
      no++;
    }
  }

  if (no == x.length()) {
    no = 0;
  }
  else {
    write();
  }

  x1 = stoi(x);
  y1 = stoi(y);

  highNumber (x1, y1);
}
void write(){
字符串x,y;
int-x1=0,y1=0,no=0;
/*高数(x1,y1)*/
cout x;
库蒂;
对于(int i=0;i如果(x[i]>='0'| | x[i]='0'| | y[i]错误似乎就在这里:
如果(x[i]>='0'| | x[i]='0'&x[i]不递归,使用循环。递归不会“重新启动”-它挂起、调用函数,然后在调用返回后继续,就像每个函数调用一样。你想做什么?什么让你难堪?具体一点。当它失败时,
无效参数
是否引发异常?使用
strtol
,它通过输出参数干净地报告非数字输入。请参阅also,用于测试字符是否为数字。