C++01-缓冲区,文件重定向


何为缓冲区

缓冲区(buffer):一个存储区域,用于保存数据。一般来说,缓冲区的产生是因为CPU的工作速度和总线传送速度远远快于外设的处理速度,为了提高效率,CPU一次把能处理的一批数据传送给外设,然而外设又不能同步处理,就会滞留数据,由此产生了缓冲区。

何为缓冲刷新操作

IO设施通常将输入(或输出)数据保存在一个缓冲区,读写缓冲区的动作与程序中的动作是无关的。我们可以显示地刷新输出缓冲,以便强制将缓冲区中的数据写入输出设备。

默认情况下,读cin会刷新cout;程序非正常终止也会刷新cout。

行输出时遇到endl,就会将与设备关联的缓冲区中的内容刷到设备中,缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是停留在内存中等待写入流。

代码演示

#include 
int main() {
    std::cout << "Enter two numbers:" << std::endl;
    int v1 = 0, v2 = 0;
    std::cin >> v1 >> v2;
    std::cout << "The sum of " << v1 << " and " << v2
              << " is " << v1 + v2 << std::endl;
    return 0;
}

————————————————
以上文字内容转载自:C++学习笔记——缓冲区与刷缓冲区*

更多关于缓冲区的刷新操作相关内容:C、C++缓冲区的刷新

何为文件结束符

#include 
int main() {
    int sum = 0, value = 0;
    //读取数据直到文件尾,计算所有读入的值的和
    while (std::cin >> value)
        sum += value;//等价于sum = sum + value
    std::cout << "Sum is: " << sum << std::endl;
    return 0;
}

如上述代码所示,在while循环的条件内std::cin >> value代表:读取到文件末尾的时候,即没有数据可供读取的时候,读文件函数返回EOF值

而此处的EOF值即为文件结束符(End of File)

不同系统中输入文件结束符

  • Windows

    Crtl+Z

  • Mac OS

    Command+D

更多相关

关于文件结束符EOF feof的区别

文件结束符EOF

何为文件重定向

重定向:在计算机领域,重定向是大多数命令行解释器所具有的功能,包括各种可以将标准流重定向用户规定地点的Unix shells。

输入重定向:可以使程序能够使用文件代替键盘作为输入(则可编辑测试用例文本进行输入)

输出重定向:可以使程序能够使用文件代替屏幕作为输出(则可将结果输出到文件)

相关博客