本文主要是介绍关于C++中getline引发的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天在编程的时候遇到了一个小问题,着实困惑了我很久。就是当我前边输入一个数并以回车结束时,这个回车符自动地被getline捕捉,当然,我想输入的根本不是这个回车符。
请看图:
当我输入n的值为2 并以回车为结束的时候,下边的循环直接进行了两次。原因可以分为两方面,第一是默认情况下,getline以‘\n’为结束标志,如果你把getline的第三个参数设置为‘#’,则不会出现上述情况。第二,从输入的六状态找原因,网上的答案有的说用cin.clear(),有的说要cin.clear()和cin.ignore()一起用才有效。在这里我参考了网上的各种版本以及自己的实践经历总结如下:
cin.clear():重置流的状态,使之有效。也就是说如果想要消除错误输入的影响,需要添加此函数。
cin.ignore(): 忽略当前缓冲区的第一个字符(即回车)。
所以要结合自己的情况使用这两个函数,事实是在我的函数中值需要使用cin.ignore()就可以了。
这篇关于关于C++中getline引发的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!