endl与 \n ; 网罗的自己捋捋~
endl会把一个'\n'写入流。 区别是,endl除了写'\n'进输出流之外,还调用输出流的flush函数,刷新缓冲区,让数据直接写入文件或者屏幕上。 他们都可以用的,不过如果需要立即显示,比如输出到显示器的场合,最用用endl,如果只是写一个'\n'不一定会立即显示,因为数据可能被存在缓冲区里,没有理解写入设备。 输出流是文件考虑效率的时候,可以直接写'\n',这样不刷新缓冲区,会更快 首先,endl是一个操作符(Manipulators),但我们必须知道endl是一个什么类型的变量。endl是跟在”<<“运算符后面,故endl应该是一个参数。其实endl是一个函数名, 它是一个"<<"运算符重载函数中的参数,参数类型为函数指针。下面我们看下内部函数实现。 1 ostream& ostream::operator << ( ostream& (*op) (ostream&)) 2 { 3 // call the function passed as parameter with this stream as the argument 4 return (*op) (*this); 5 } 1 std::ostream& std::endl (std::ostream& strm) 2 { 3 // write newline 4 strm.put('\n'); 5 //