Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过C++写语句的粗体文本_C++_Sockets_Networking_Formatting_Command Line Interface - Fatal编程技术网

通过C++写语句的粗体文本

通过C++写语句的粗体文本,c++,sockets,networking,formatting,command-line-interface,C++,Sockets,Networking,Formatting,Command Line Interface,我正在通过telnet使用字典服务器,希望它以以下格式返回: **word** (wordType): wordDef wordDef wordDef wordDef wordDef wordDef wordDef. 现在,我使用以下方法输出代码: write( my_socket, ("%s", word.data() ), word.length() ); // Bold this write( my_socket, ("%s", t

我正在通过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() );
所以我希望第一行用黑体字

编辑
抱歉,我忘了提到这是用于命令行的。

请考虑使用类似的命令行。由于您的服务器是基于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等。如果只需要简单的粗体开/关,可能会有点重,但您可能需要考虑使用类似的模式。由于您的服务器是基于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等。如果您只需要简单的粗体开/关,可能会有点重,但您可能需要考虑使用这些模式。

恐怕字体的样式无法通过套接字发送。为什么不像这样使用HTML语法呢?这个文本是粗体的,接收者会检查这些标签并相应地采取行动。它不会在代码段中加粗文本。我应该在Meta上发布吗?恐怕字体的样式不能通过套接字发送。为什么不像这样使用HTML语法呢?这个文本是粗体的,接收者会检查这些标签并相应地采取行动。它不会在代码段中加粗文本。我应该把它贴在Meta上吗?它应该怎么放进去?字符串粗体[1m;.@ jBoad ]大小是转义序列中字符的数量,在这种情况下是4字节。我已经用一些示例代码更新了我的答案。我建议在STD::字符串中存储转义序列。虽然在示例中我使用C样式字符串来简洁。谢谢,它非常好。我真的厌倦了尝试写C++字符串,I。制作我自己的包装器,如下所示:由于函数不需要修改word,请将其更改为int Sendint socket、const string和word。这将阻止修改word,并允许您将右值传递给Send。当前,您正在传递字符串以按值发送。这意味着在调用Send之前创建字符串的副本。按const referee传递nce消除了副本并允许您传递右值。您可以像以前一样执行std::string str;Sendsock,str;'或Sendsock,hello;`操作,因为std::string具有C样式字符串的隐式转换构造函数。该如何准确地将其放入?string boldESC[1m;.@ jBoad ]大小是转义序列中字符的数量,在这种情况下是4字节。我已经用一些示例代码更新了我的答案。我建议在STD::字符串中存储转义序列。虽然在示例中我使用C样式字符串来简洁。谢谢,它非常好。我真的厌倦了尝试写C++字符串,I。制作我自己的包装器,如下所示:由于函数不需要修改word,请将其更改为int Sendint socket、const string和word。这将阻止修改word,并允许您将右值传递给Send。当前,您正在传递字符串以按值发送。这意味着在调用Send之前创建字符串的副本。按const referee传递nce消除了副本并允许您传递右值。您可以像以前一样执行std::string str;Sendsock,str;'或Sendsock,hello;`操作,因为std::string具有C样式字符串的隐式转换构造函数。