从开始接触C++到现在,一直以为语句
cout << "hello world!" << endl;
中的endl只是一个相当于C中的换行‘\n’;直到今天,莫名的搜索了一下endl才发现了一个惊天大秘密,原理endl不仅仅是一个换行那么简单,它居然是一个函数模板,实例化后变成一个模板函数,作用就是insert newline and flush stream;
// MANIPULATORS
template<class _Elem,
class _Traits> inline
basic_ostream<_Elem, _Traits>&
__CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
{ // insert newline and flush stream
_Ostr.put(_Ostr.widen('\n'));
_Ostr.flush();
return (_Ostr);
}
IO *** 纵符:(本质是自由函数,不封装在某个类的内部,使用时不采用显式的函数调用形式)
endl:输出时插入换行并刷新流
endls:输出时在字符 插入NULL作为尾符
flush:刷新缓冲区,把流从缓冲区输出到目标设备,并清空缓冲区
ws:输入时略去空白字符
dec:令IO数据按十进制格式
hex:令IO数据按十六进制格式
oct:令IO数据按八进制格式
更多关于 *** 纵符的细节http://blog.csdn.net/k346k346/article/details/49981695
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)