齐全的网站建设,做微博这样的网站吗,不良网站进入窗口免费正能量,做网站上怎么推广呢C primer plus 第17 章 输入、输出和文件#xff1a;刷新输出缓冲区
C primer plus 第17 章 输入、输出和文件#xff1a;刷新输出缓冲区 文章目录 C primer plus 第17 章 输入、输出和文件#xff1a;刷新输出缓冲区17.2.3刷新输出缓冲区 17.2.3刷新输出缓冲区
如果程序使…C primer plus 第17 章 输入、输出和文件刷新输出缓冲区
C primer plus 第17 章 输入、输出和文件刷新输出缓冲区 文章目录 C primer plus 第17 章 输入、输出和文件刷新输出缓冲区17.2.3刷新输出缓冲区 17.2.3刷新输出缓冲区
如果程序使用cout将字节发送给标准输出情况将如何?由于ostream 类对cout 对象处理的输出进行缓冲所以输出不会立即发送到目标地址而是被存储在缓冲区中直到缓冲区填满。然后程序将刷新(ush)缓冲区把内容发送出去并清空缓冲区以存储新的数据。通常缓冲区为512字节或其整数倍。当标准输出连接的是硬盘上的文件时缓冲可以节省大量的时间。毕竟不希望程序为发送512个字节而存取磁盘512次。将512个字节收集到缓冲区中然后一次性将它们写入硬盘的效率要高得多。 然而对于屏幕输出来说首先填充缓冲区的重要性要低得多。如果必须重述消息“Press any key tocontinue”以便使用 512个字节来填充缓冲区实在是太不方便了。所幸的是在屏幕输出时程序不必等到缓冲区被填满。例如将换行符发送到缓冲区后将刷新缓冲区。另外正如前面指出的多数C实现都会在输入即将发生时刷新缓冲区。也就是说假设有下面的代码:
cout Enteranumber:;
float num;
cin num;程序期待输入这一事实将导致它立刻显示cout消息(即刷新“Enteranumber:”消息)即使输出字符串中没有换行符。如果没有这种特性程序将等待输入而无法通过cout消息来提示用户。如果实现不能在所希望时刷新输出可以使用两个控制符中的一个来强行进行刷新。控制符 fush 刷新缓冲区而控制符 endl 刷新缓冲区并插入一个换行符。这两个控制符的使用方式与变量名相同:
cout Hello,good-looking! flush;
cout Wait just a moment,please.” endl;事实上控制符也是函数。例如可以直接调用ush()来刷新cout缓冲区:flush(cout); 然而ostream 类对插入运算符进行了重载使得下述表达式将被替换为函数调用
fush(cout):
cout flush因此可以用更为方便的插入表示法来成功地进行刷新。