zoukankan      html  css  js  c++  java
  • scanf 和cin 的区别

    笔试的时候经常遇到突然string s;cin>>s;

    有的时候编译会错误,不知道为什么。

    今天在练习枚举类型的时候,也遇到这样一个问题。

    enum weekday{Monday,Tuesday} day;

    cin>>day;//报错

    scanf("%d",&day);//正常

    周纯洁的书上也都是用scanf;看样子scanf和printf不能随便丢弃啊。毕竟是标准输入输出流,没有缓存区




    scanf是格式化输入,printf是格式化输出。
    cin是输入流,cout是输出流。效率稍低,但书写简便。 格式化输出效率比较高,但是写代码麻烦。 流输出操作效率稍低,但书写简便。 cout之所以效率低,正如一楼所说,是先把要输出的东西存入缓冲区,再输出,导致效率降低。 缓冲区比较抽象,举个例子吧: 曾经就遇到过这样的情况(类似的), int i; cout<<'a'; cin>>i; cout<<'b'; 运行结果什么都没看到输出,输入一个整型比如3再按回车后ab同时显示出来了。 但是这样的情况并不是经常发生,是在一些比较大型的工程中偶尔出现,原因是字符a先到了缓冲区,但是没输出,等输入了i,b进入 缓冲区后再一并输出的。 流输入也是差不多的。 关于C++中用iostream好还是stdio.h比较好 这个问得的确不好回答了。。 iostream.h和stdio.h是C++的两个头文件,里面是对于一些类,操作符,函数的定义,头文件本身应该没有好坏之分吧~~
    ————————————————————————————————————————————————————————
     
    
    又查了一下,最新的G++,cin已经比scanf快了,ACM如果scanf超时的话可以用G++提交一下试一下,呵呵,不过,我以后还是打算老老实实的用scanf。。 
     
    cin的实时性较差,因为它使用了缓冲区,一般情况下满了才刷新的。
    
    对于字符:cin的输入忽略空格和回车。scanf("%c",&i)等价于i = getchar(),换行符和回车都会被读入。
  • 相关阅读:
    vs2010在进行数据架构比较时报'text lines should not be null'错误
    idea安装2019
    无法获得VMCI驱动程序的版本:句柄无效
    VMware对虚拟机快照进行克隆
    此主机支持Intel VT-x,但Intel VT-x处于禁用状态
    惠普台式机,如何开启虚拟化技术
    eclipse格式化代码快捷键失效
    python之shutil模块
    hadoop中hive常用的交互式操作
    hadoop中hive的属性
  • 原文地址:https://www.cnblogs.com/limera/p/5405705.html
Copyright © 2011-2022 走看看