std::endl的作用
来源:互联网 发布:超级优化txt网盘 编辑:程序博客网 时间:2024/06/06 00:36
我们知道,最后出现的 "\n "可以实现一个换行,不过我们在用C++时教程中总是有意无意地让我们使用endl,两者看上去似乎一样——究竟其中有什么玄妙?查书,书上说endl是一个操纵符(manipulator),它不但实现了换行操作,而且还对输出缓冲区进行刷新。什么意思呢?原来在执行输出操作之后,数据并非立刻传到输出设备,而是先进入一个缓冲区,当适宜的时机(如设备空闲)后再由缓冲区传入,也可以通过操纵符flush进行强制刷新:
cout < < "Hello, World! " < < "Flush the screen now!!! " < < flush;
这样当程序执行到operator < <(flash)之前,有可能前面的字符串数据还在缓冲区中而不是显示在屏幕上,但执行operator < <(flash)之后,程序会强制把缓冲区的数据全部搬运到输出设备并将其清空。而操纵符endl相当于 < < "\n " < < flush的简写版本,它先输出一个换行符,再实现缓冲区的刷新。大概这是因为一般的输出都是以换行结尾,而结尾处又是习惯进行刷新的时期,方便起见就把两者结合成了endl。读者有兴趣的话,回去也可以为我们的MyOutstream实现一个类似的myflush和myendl操纵符,相关的用于刷新C函数是fflush。
不过可能在屏幕上显示是手动刷新与否区别看来都不大。但对于文件等输出对象就不大一样了:过于频繁的刷新意味着老是写盘,会影响速度。因此通常是写入一定的字节数后再刷新,如何操作?靠的就是这些操纵符。
cout < < "Hello, World! " < < "Flush the screen now!!! " < < flush;
这样当程序执行到operator < <(flash)之前,有可能前面的字符串数据还在缓冲区中而不是显示在屏幕上,但执行operator < <(flash)之后,程序会强制把缓冲区的数据全部搬运到输出设备并将其清空。而操纵符endl相当于 < < "\n " < < flush的简写版本,它先输出一个换行符,再实现缓冲区的刷新。大概这是因为一般的输出都是以换行结尾,而结尾处又是习惯进行刷新的时期,方便起见就把两者结合成了endl。读者有兴趣的话,回去也可以为我们的MyOutstream实现一个类似的myflush和myendl操纵符,相关的用于刷新C函数是fflush。
不过可能在屏幕上显示是手动刷新与否区别看来都不大。但对于文件等输出对象就不大一样了:过于频繁的刷新意味着老是写盘,会影响速度。因此通常是写入一定的字节数后再刷新,如何操作?靠的就是这些操纵符。
- std::endl的作用
- 语句std::cout<<std::endl的作用
- std::endl 有什么作用
- 【C++】endl的作用
- endl的作用
- C++中关于std::endl的理解
- 模仿std::endl函数
- 也说 std::endl
- 说说std::endl函数
- std::endl倒底是什么意思?
- std::cout和std::endl是什么意思?
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- 解开一个困扰自己多时的小问题——从std::cout和endl说起
- ABSDM的软件过程
- Oracle 10G利用命令行手工创建数据库
- 索引——集群因子
- 变量的属性
- Yammer的启示:如何让别人用10亿美元收购
- std::endl的作用
- Objective-C的@property 详解(ios,iphone,xcode,retain,release,assign,copy)
- C#操作XML
- [转]Android的Handler总结
- detours2.1 VC6中编译方法及源代码及使用例子及编译好的BIN
- linux matlab saveas core 掉
- spring加载xsd文件
- CentOS 6.2安装(超级详细图解教程)
- windows server 2008服务器自动重启关闭