- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个函数可以将一些文本打印到它接收到的 ostream&。如果 ostream 以终端为目标,我想让它适应终端宽度,否则默认为某个值。
我现在做的是:
ostream
中获取一个 ofstream
。ofstream
中获取一个 FILE*
。FILE*
中获取一个整数文件描述符。ioctl(file_descriptor, TIOCGWINSZ, &my_struct_winsize);
由于这个 SO 答案,第 1 步和第 2 步带来了:
Getting a FILE* from a std::fstream
但它们不可移植且特定于 GCC(我不确定它们是否适用于 cout/cerr/cin 以外的 ostream)。我能做得更好吗?
最佳答案
这些都不是 gcc 特定的。其余的,TIOCGWINSZ
广泛实现并与 POSIX termios ( terminal I/O ) 一起使用,尽管它和相应的 SIGWINCH
奇怪的是不在 POSIX 中。其他获取终端宽度的方法(仍然针对POSIX平台,Windows普遍不适用):
COLUMNS
和 LINES
(许多终端应用程序,包括那些使用 curses 的终端应用程序都这样做,例如,参见 use_env
,由任何 X/Open curses 实现提供,例如 ncurses
)。resize
完成的 ECMA-48 光标位置报告程序。对于 Windows,这些都不适用。您将从控制台 API 调用之一获取信息,例如 GetConsoleScreenBufferInfo . Cygwin 是一个特例,因为它运行(或多或少)与 ioctl
一起工作的类似 POSIX 的应用程序。以及 POSIX 终端 I/O。 MinGW 处于较低级别,并没有在此区域中对控制台 API 提供任何真正的扩展。
进一步阅读:
<sys/ioctl.h>
(对 Cygwin 邮件列表的澄清)SIGWINCH
)关于c++ - 是否有(更)合理的方法来确定 ostream 所针对的终端的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35668636/
我有一个曾经是 TreeView 控件的菜单,但现在我想让每个项目更加直观,并向树中的每个对象添加更多信息。 我的第一个意图是制作一个代表项目的用户控件,并在运行时将它们添加到面板中。这是一个好方法吗
我是 Docker 新手,想知道是否有可能(并且是一个好主意)在 Docker 容器中进行开发。我的意思是创建一个容器,执行 bash,安装和配置我需要的一切,然后开始在容器内进行开发。 容器将成为我
在 Java 中: Parent obj = new Child(); 我创建了一个 Parent 类型的对象。我假设我只能调用父类中定义的方法。因此,我无法调用 Child 中定义的“附加”方法或访
注意:我省略了其他两个阶段(V 和 W)的代码,示例中不需要。 我很确定,我这样处理“开”和“关”时间的方式并不是一种有效的方式。 我想使用查找表实现“开”和“关”脉动。计时器应与表的当前选定值进行比
当代码中包含 Java instanceof 运算符时,许多人会扬起眉毛并说这是禁忌。例如,在这个 other SO Q&A ,答案说: Note that if you have to use th
我是一名优秀的程序员,十分优秀!