码迷,mamicode.com
首页 > 移动开发 > 详细

关于ios::sync_with_stdio(false)的一些问题

时间:2020-07-28 22:41:21      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:整数   size   c++   键盘   get   std   with   直接   风格   

使用ios::sync_with_stdio(false)可以让cin读入的更快,它的原理是使本该同步的输入输出流分开,就是让c风格的输入输出流和c++的输入输出流分开。

举一个具体的例子,在正常c++中,当我们用cin输入整数,当我们在键盘上输入的时候,我们输入的东西进到了缓冲区,假设我们输入了

6 3

两个数之间有空格,最后有回车

这些东西都进入了缓冲区,然后cin从缓冲区中读取这些字符,cin会一直读取到空格或者回车,第一个cin读到6,6之后的空格没有读,还在缓冲区中,接下来第二个cin会忽略掉空格,读取了3,在读到回车前结束,这时候缓冲区中还有个回车,如果接下来我们想用gets来读取字符串,那么gets会读到回车后结束,因为这时候缓冲区中正好就有个回车,所以gets会直接读到那个回车,然后结束读入,所以我们输入的字符并没有被gets读到,一般这个时候都会再定义一个字符c来吃掉回车。

如果这时候,我们在前边写了ios::sync_with_stdio(false)那么c的缓冲区和c++的缓冲区就会分开,还是进行和刚才同样的操作的话,这时候cin后的回车停留在了c++的缓冲区中,而gets是c函数,所以这时候gets是从c的缓冲区中读入字符,而这时c的缓冲区什么也没有,所以gets就等待输入,所以我们就把字符输入进了gets,而并没有用到用来吃掉回车的字符。

关于ios::sync_with_stdio(false)的一些问题

标签:整数   size   c++   键盘   get   std   with   直接   风格   

原文地址:https://www.cnblogs.com/fate-/p/13393892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!