【问题标题】:Width of cout - displaycout 的宽度 - 显示
【发布时间】:2012-02-16 20:45:47
【问题描述】:

我想知道:是否有可能在标准输出中获得一条线的宽度?不是std::cout.width()std::setw() 宽度,而是操作系统换行之前的实际最大字符数?

编辑:只是通知一下,我目前正在使用 windows xp,尽管我真的更喜欢便携式方式来做到这一点(其他一切都是便携式 atm)。

【问题讨论】:

  • 您使用的是什么操作系统?
  • @Grammin 没有便携的方式吗?好吧,现在我使用的是 Windows(xp 和 7),尽管在此功能之前,所有内容都是以可移植的方式编写的。
  • stdout 是一个流。一条河里有多少水?您的问题是关于终端,而不是 cout。

标签: c++ command-prompt cout


【解决方案1】:

不使用标准 C++。 cout 不必绑定到控制台,其中“宽度”将毫无意义。

当然也可以使用其他一些库,例如ncurses.

如果您使用的是 Linux,请查看Getting terminal width in C?;如果您使用的是 Windows,请查看Getting terminal size in c for windows?

【讨论】:

    【解决方案2】:

    在我使用的系统(Windows 和 Unix)上,操作系统从不换行。 然而,各种显示设备可能会;通常的xtermwindows下 例如,X 或 Windows 下的控制台窗口将在 一定数量的字符,如果您要输出到其中之一, 有一种依赖于实现的方法来确定 片刻。但是,它是否真的有用,我不知道,因为它 可以在您阅读它的那一刻和您输出的那一刻之间发生变化。

    当输出到文件时,当然没有换行,而且我已经 有时不得不处理行长超过 万字。

    【讨论】:

    • @paul32: CMD.EXE > 属性 > 屏幕缓冲区宽度 > 201。没有换行。最糟糕的是,这意味着即使您现在可以确定std::cout 的宽度,它也可能在您写入之前发生变化。
    • @paul23 它不适用于我可以使用的两个实现(g++ 4.4.2 和 VS 2010)。我认为该标准甚至不允许包装。输出设备可能会包裹显示,但这与程序无关——写入文件,然后查看文件中的内容。
    • 无操作编辑以删除反对票。 (抱歉——没有意识到你说的是“程序本身”而不是实际输出)
    • @BillyONEal 我说的是程序的输出。我不确定您所说的“实际输出”是什么意思——输出是一个字节序列。在这个字节序列中没有换行。任何包装都是显示设备的产物:显示设备如何显示数据的特性,而不是数据(输出)本身的特性。它与创建数据的程序无关,也与操作系统无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多