可以做全景的网站,微信号 网站模板,建立网站怎么申请,没有备案的网站可以做淘宝客cin.sync()的功能是清空缓冲区#xff0c;而cin.ignore()虽然也是删除缓冲区中数据的作用#xff0c;但其对缓冲区中的删除数据控制的较精确。
有时候你只想取缓冲区的一部分#xff0c;而舍弃另一部分#xff0c;这是就可以使用cin.ignore()#xff0c;其使用方法是而cin.ignore()虽然也是删除缓冲区中数据的作用但其对缓冲区中的删除数据控制的较精确。
有时候你只想取缓冲区的一部分而舍弃另一部分这是就可以使用cin.ignore()其使用方法是
cin.ignore(int intExp, char chExp);
其中intExp 是一个整型表达式也可以是一个整型数值这个数值表示在一行中忽略的字符的最大数目比如说intExp100还有一个参数chExp,是一个字符表达式。表示如果遇到一个字符值等于chEXP那么就停止ignore()如果ignore100个字符之后还没遇到值等于chEXP的字符那也得停止ignore()所以100是ignore()所忽略的最大字符数。 下面是几个例子
#includeiostream
#includecstdlib
int main()
{ int ival1 0, ival2 0; std::cin ival1; std::cin.ignore(100, \n); std::cin ival2; std::cout ival1 ival1 std::endl; std::cout ival2 ival2 std::endl; system(pause); return 0;
} ①按下Enter后ival1接收了12剩余的都被清除掉了因为Enter就是本身就是空行符然后输入流会等待第二次输入为ival2赋值。如过没有中间那句std::cin.ignore(100, \n) 则不会等待第二次输入直接输出ival1 12 ival2 34 ②把std::cin.ignore(100, \n) 改成std::cin.ignore(2, \n)呢ival1接收了12之后ignore清除掉两个字符 为什么ival2是4而不是78呢
因为我们所用的IO对象cin cout 都是操纵char数据的不管我们输入的是什么数据cin cout 都会转成 char来处理例如我们想要输出的是一个整形变量的值那么在输出前cout会将该变量的值转成字符在进行输出C Primer Plus中有一句话In essence, the Cinsertion operatoradjusts its behavior to fit the type of data that follows it.所以上面ignore清除掉了一个空格和一个字符3所以缓冲区中剩余4、56、78所以ival2等于4.
③如果cin.ignore()不给参数则默认参数为cin.ignore(1,EOF)即把EOF前的1个字符清掉。