请问std::cout |
您所在的位置:网站首页 › morkeys是什么意思 › 请问std::cout |
以下为手机码字,所以没法用代码块,请见谅。 首先回答题主问题:不是。 这个运算符有两个作用,一个是题主说的位运算,另一个是cout这类场合中的流运算符。 流运算符,可以把它理解为数据流向。 cout是数据输出接口,比如把它当成控制台显示界面。 然后> num; 就是从控制台读取一个浮点数到num,于是可以在黑框框里输入3.14,回车,这个数就存进num里了。 流运算符可以连续使用,比如cout > numB; 就会依次读入一个float和一个int,这两个在输入时用空格分隔。 以上四个例子,对应的c代码是: printf(“%f”, 3.14); scanf(“%f”, &num); printf(“%f %s”, 3.14, “hello world!”); scanf(“%f %d”, &numA, &numB); 发现什么了没? 用流运算符做输入输出,一来数据流向更直观,二来不用费心写%类型标记,运算符会自动识别类型。 不过坏处是,做类似%5.2f这种格式化输出会比较麻烦。 对了,流运算符中,要输出换行有两种方式,一种是输出字符\n,一种是输出特定的换行标识符std::endl。 这里建议用第二种。因为第二种除了显示换行,同时还负责刷新输出缓冲。 什么意思呢?从/往硬件(如显示器)输入/输出东西是很耗时的,所以平时写入到cout里的东西,程序会将其暂存起来,不会马上显示出去。只有当存满一定量,或者接收到std::endl时才会将缓存的数据显示到控制台。 printf也是一样的,不过是识别\n来刷新缓冲。std::cout则不会用\n刷新缓冲,必须使用std::endl。 (其实std::cout的输出和printf是同步的,所以一般情况\n是可以刷新缓冲的。但这个同步可以关掉,此时就必须使用endl刷新缓冲了。) (关闭与printf的同步有什么用呢?写oj的可能就明白了,printf和scanf由于要解析格式字符串,理论性能应该是低于cin cout的。但cin cout由于要和printf scanf同步,性能反而更低。这时关掉同步,就可以获得理论上应有的高性能) (自己用getchar写的魔改版快速输入不算,那个性能比cin还高。其实cin应该更高的,但它读取数字时除了解析标准写法,还要兼顾科学计数法等奇葩写法,效率就被拉下来了) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |