目录
cin.sync()
在数据输入错误的时候,我们需要重新输入数据,首先要清除输入缓冲区里面残留的数据,此时我们可以使用函数cin.sync(),但很不幸的是,这个函数在vs中是无效的(在vc++2010可以),这个函数在vs中无效,我们就使用函数 ignore().
ignoer()函数它有俩个参数,示例:第一个参数表示最多清除的字符个数(最多扔掉10个数据),第二个表示直到遇到字符'1',就停止丢弃(不管有没有达到10个字符),字符'1'本身也被丢弃.
numeric_limits<streamsize>::max()
但这是不现实的,数据是用户输入的,我们哪里知道他输入了多少个数据啊?所以我们要把用户本次输入的数据全部都清掉,就用 numeric_limits<streamsize>::max() 来清理最大的数据个数(即全部),直到遇到回车符'\n'.但是我们会看到这里有一个错误提示,这句涉及到另一个问题了!!!
在我们使用这个函数的时候,头文件 #include<Windows.h> 会和 numeric_limits<streamsize>::max()发生冲突,这可能是头文件里面的宏定义和这里发生了冲突,如果我们去掉头文件 #include<Windows.h> 那么就不会报错,但这个头文件是要经常用到的,这不可取.
我们可以通过括号"()",来避免编译器报错,也就是改成这样:
以上!