请问std::cout

您所在的位置:网站首页 morkeys是什么意思 请问std::cout

请问std::cout

2023-12-29 09:24| 来源: 网络整理| 查看: 265

以下为手机码字,所以没法用代码块,请见谅。

首先回答题主问题:不是。

这个运算符有两个作用,一个是题主说的位运算,另一个是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