在需要数字时键入字符串时使用CIN的无限循环

在需要数字时键入字符串时使用CIN的无限循环

在下面的循环中,如果我们将字符键入为cin输入而不是期望的数字,然后进入无限循环。有人能给我解释一下为什么会发生这种事吗?

当我们使用cin,如果输入不是一个数字,那么是否有方法检测到这一点以避免上述问题?

unsigned long ul_x1, ul_x2;while (1){
  cin >> ul_x1 >> ul_x2;
  cout << "ux_x1 is " << ul_x1 << endl << "ul_x2 is " << ul_x2 << endl;}


互换的青春
浏览 665回答 3
3回答

喵喔喔

也许是因为CIN是一个流函数。当输入一个非数字而不是数字时,它将被忽略.你会被提示重新进入。即使您确实提供了数字输入,也会提示您输入更多的输入,因为您处于无限循环中。您可以这样解决这个问题:1.创建一个接受字符串输入的函数。2.转换后以数值形式返回它。使用strtod()进行转换。希望这有帮助:)
打开App,查看更多内容
随时随地看视频慕课网APP