【问题标题】:How many chars or characters , or bytes of data std::cout can output at once?std::cout 一次可以输出多少个字符或字符或数据字节?
【发布时间】:2020-12-07 19:03:08
【问题描述】:

我正在学习 C++,所以您认为我是 C++ 和编程新手是非常正确的。

我试图了解iostream 库,不是全部,而是新手在进入另一个主题之前必须了解的内容。我对std::cout 的理解是,它是一个变量,其中包含用于输出到控制台的一串字符或其他变量的值。

现在我很想知道作为字符串的最大字符数——直接给出(如std::cout <<"hello\n"--it(std::cout) 可以输出到控制台。

【问题讨论】:

  • std::cout不限,but a string literal is.
  • std::cout 使用的缓冲区是有限的,其大小由实现定义。此外,可能存在层和多个缓冲区,具体取决于操作系统。您始终可以编写一个测试程序来获取有关您系统的信息。

标签: c++ output iostream cout


【解决方案1】:

没有指定的限制。可能存在实际实现特定的限制。很可能,它会超出您的需要。

注意std::cout 流向标准输出。虽然这通常显示在控制台中,但不一定如此。

【讨论】:

    【解决方案2】:

    您对std::cout 的理解并不完全正确。 std::cout 是一个变量,但它不保存字符,它输出字符(通常到控制台)。

    现在std::cout 通常是缓冲的,这意味着它不会立即输出字符,而是仅在其缓冲区已满或有完整的字符行时才输出。但是这个过程是自动发生的,我不认为这就是你所说的“保存字符”。

    【讨论】:

    • 感谢您在我的理解中纠正相反的情况。那么std::cout的缓冲区最大大小是多少?
    • @Yousuf 如果缓冲区已满,它将自动刷新到标准输出连接到的任何设备(通常是终端),std::cout 不会受到打扰。输出数量不受std::cout的任何限制。它可能会受到连接设备的限制。例如,如果您将二进制文件的输出流式传输到文件,硬盘驱动器可能会变满。
    • 所以std::cout 要输出的数据大小取决于控制台、硬盘驱动器(使用cout 写入时)或监视器等输出设备。如果数据是字符串(正如@alain 指出的那样),它对字符串的长度有限制,但这不是std::cout 的限制,而是C++ 中字符串实现的限制。如果我错了,请纠正我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多