笔试的时候经常遇到突然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(),换行符和回车都会被读入。

scanf 和cin 的区别的更多相关文章

  1. scanf 与 cin 的区别

    在论坛上看到有人提出一个如下的问题,在此总结一下. 原问题: http://topic.csdn.net/u/20110414/22/90d0606c-9876-48e4-9b69-bd8bd8a41 ...

  2. scanf和cin的差异

    scanf和cin的差异 引例:http://www.cnblogs.com/shenben/p/5516996.html 大家都知道,在C++中有两种输入.输出方式—scanf和cin,但是,它们之 ...

  3. 关于scanf与cin哪个快的问题

    一开始入c++的时候成天跑cin,cout 直到有一天用cin,cout超时 才知道scanf比cin快的多 但是后来又听说加了ios::sync_with_stdio(false);的cin跟飞一样 ...

  4. scanf()与gets()的区别

    scanf()与gets()的区别 1.scanf()可以同时接受多个字符串,而gets()一次只能接受一个字符串. #include<stdio.h>int main(){ char s ...

  5. scanf,fscanf,sscanf的区别----整理

    转自原文 scanf,fscanf,sscanf的区别----整理 scanf 从控制台输入 fscanf 从文件输入 sscanf 从指定字符串输入 1.例:使用scanf函数输入数据. #incl ...

  6. 关于scanf与gets的区别

    以下内容主要来源: scanf与gets读取字符串 scanf与gets函数读取字符串的区别 前两天有个同学问我scanf与gets的区别说了半天也没说出来个所以然,就搜了一下,scanf()和get ...

  7. 关于scanf 与 cin gets(),getline()......输入输出字符串的区别

    很对人对于字符串的输入输出一直是比较模糊的,今天总结一下几个常用的输入流符号对于输入字符串时的区别: 1.scanf(),首先 它遇到空格或回车键(\n)就会结束,并且会将回车符算入字符串中: 2.c ...

  8. scanf函数和cin的区别、类的数组、C++排序函数

    给定n个字符串,将这n个字符串按照字典序进行排列,此处用排列函数是C++的库函数sort,产生如下两个疑问,望大佬解答 #include <iostream> #include <a ...

  9. Java中的“scanf()、cin()、input()"

    最近在写一个Java程序时遇到一个问题,就是如何在Java里面输入数值,又叫做获取键盘输入值. 因为c语言里面有scanf(),C++里面有cin(),python里面有input().Java里面有 ...

随机推荐

  1. 【二分+最大团】【HDU3585】【maximum shortest distance】

    题目大意 在N个点钟 选出K个点 使得这K个点间的最小距离最大 二分距离,然后如果两点间距离小于它的边当做不存在,求出最大团,如果最大团>=K,向上缩小区间 <  K  ,  向下缩小区间 ...

  2. n条直线的最多交点

    #include <iostream>using namespace std;int main(){int i,n;while(cin>>n){if(n==0||n==1) c ...

  3. javase程序设计课后题答案

    ;第1章 Java概述 编译java application源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java 执行一个java程序fristapp的方法是运行java frist ...

  4. DOM的认识以及一些节点的应用

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 通过 ...

  5. Javascript 运动中Offset的bug——逐行分析代码,让你轻松了解运动的原理

    我们先来看看这个bug 是怎么产生的. <style type="text/css"> #div1 { width: 200px; height: 200px; bac ...

  6. 通过读取excel数据和mysql数据库数据做对比(一)-win环境准备

    要想操作excel和mysql首先需要安装python,然后是安装excel和mysql插件: 第一步安装python: 直接百度搜索,下载安装就可以了. 第二步安装excel插件: 首先到这个htt ...

  7. 一维树状数组(HD1166)

    #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string.h> using namespace st ...

  8. ctype.h 字符分类与转换

      函数及说明 1 int isalnum(int c)该函数检查传递的字符是否是字母数字. 2 int isalpha(int c)该函数是否传递的字符是字母. 3 int iscntrl(int ...

  9. 【翻译】MVC Music Store 教程-概述(二)

    1. 文件->新建项目 软件安装 此篇将从运用免费的Visual Web Developer 2010Express来创建ASP.NET MVC3开始,逐步的添加一些功能来创建一个完整的应用程序 ...

  10. SQL Server IO系统问题解决

    方法 1. 查询是不是真的要返回这么多的数据. 方法 2. 查询是不是系统的内存不足. 方法 3. 检查查询要访问的数据是不是不常用.如果这个数据不常用,它没有在内存中也就不奇怪了. 方法 4. 是不 ...