我正在通过telnet在词典服务器上工作,我希望它以以下格式返回:

  **word** (wordType): wordDef wordDef wordDef wordDef
wordDef wordDef wordDef.
现在,我正在使用以下代码输出代码:
write( my_socket, ("%s", word.data()    ), word.length()    ); // Bold this
write( my_socket, ("%s", theRest.data() ), theRest.length() );
所以我希望第一行加粗。
编辑
抱歉,我忘了提到这是针对命令行的。

最佳答案

考虑使用VT100 escape sequences之类的东西。由于您的服务器是基于telnet的,因此用户很可能拥有支持各种终端模式的客户端。

例如,如果您想为VT100终端打开粗体,则将输出

ESC[1m

其中“ESC”是字符值0x1b。切换回普通格式输出
ESC[0m

要在您的应用程序中使用它,您可以将示例行从您的问题更改为以下内容。
std::string str = "Hello!"
write( my_socket, "\x1b[1m", 4); // Turn on bold formatting
write( my_socket, str.c_str(), str.size()); // output string
write( my_socket, "\x1b[0m", 4); // Turn all formatting off

还有其他终端模式,例如VT52,VT220等。您可能想研究使用ncurses,尽管如果您需要的只是简单的粗体开/关功能,可能会有些沉重。

10-04 14:14