看轮子哥答案笑死, 笑完了强答一下.
二者的定义官方说法是这样的:
好的, 放完洋屁翻译一下:
然而, 我们在看 cin 的说明,
直到缓冲区满了才会清空缓冲区并把字串输出到 stdout 之类的输出流, 这也就是为什么关闭了缓冲区可能会出现错误. 那么说到这里也就整明白了, 如果频繁使用 std::endl 来做换行输出, 那便是破坏了 std::cout 本身的类似于优化的操作, 也就导致了通常认为 std::cout 的速度比 printf慢.
这也就很好的解释 leetcode 中经常看到的一段加速代码:
}
I/0流是输入或输出的一系列字节,当程序需要在屏幕上显示输出时,可以使用插入操 作符“<<”向cout输出流中插入字符。例如:
当程序需要执行键盘输入时,可以使用抽取操作符 “>>”从cin输人流中抽取字符。例如:
不管把什么基本数据类型的名字或值传给流,它都能懂。
例如,下面的函数输出字符串和整数:
流的默认格式输出有时不能满足特殊要求,如:
希望显示的是9.40,即保留两位小数,可是却显示了9.40007;默认显示6位有效位。 用控制符(manipulators)可以对I/O流的格式进行控制。控制符是在头文件iomanip.h中定义的对象。可以直接将控制符插入流中。常用 控制符如表2-4所列。
表2-4 I/O流的常用控制符
使用控制符时,要在程序的头上加头文件iomanip.h。
该程序在32位机器上运行通过。
在用浮点表示的输出中,setdivcision(n)表示有效位数。
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置 为1来看待:第3~6行输出按设置的有效位数输出。
在用定点表示的输出中,setdivcision(n)表示小数位数。
在用指数形式输出时,setdivcision(n)表示小数位数。
第8行输出用 setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8。
小数 位数截短显示时,进行4舍5入处理。
变量是程序分配给某个内存位置的名字,它可以存放信息。程序在使用变量前,必须先说明变量名和变量 类型。
不同的变量不能同名,变量名应该尽量反映出变量的用途,以增强程序的可读性。
在程序运行中,常量的值不可改变。常量也有各 种数据类型,也占有存储空间。各种数据类型的数据表示有一定的范围,越过了该范围, C++就要对该数据进行截取,使得数据不再正确。
利用 cout可以输出各种数据类型的数据,可以多种方式在屏幕上显示输出信息(包括特殊符号)。
}