zoukankan      html  css  js  c++  java
  • 关于ios::sync_with_stdio(false)的一些问题

    使用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,而并没有用到用来吃掉回车的字符。

  • 相关阅读:
    怎樣在不同DB環境生成其它DB的存儲過程
    XML之sql:column用法对性能影响
    XML之sql:variable性能比较
    环回链接服务器
    动态列名数据视图实现
    一起学习win8应用1构建我们的第一个应用
    linux 限制root SSH登陆和限制su
    nginx 直接在配置文章中设置日志分割
    linux建立ssh信任关系
    linux系统meminfo详解(待补充)
  • 原文地址:https://www.cnblogs.com/fate-/p/13393892.html
Copyright © 2011-2022 走看看