C++中的粗体输出

Kit*_*Kat 7 c++ string

我正在构建一个字典,当我打印(输出)单词防御时,我想用粗体打印单词本身.当我打印

cout<<word<<endl<<defention1<<defenition2<<endl;
Run Code Online (Sandbox Code Playgroud)

我希望唯一的"字"是大胆的.

我怎样才能做到这一点?

vso*_*tco 17

标准C++使用各种区域设置/字符集以各种字母表显示输出.但是,文本本身只是文本,没有格式化.

如果您希望输出为coloredbold,或者italicized,则需要向终端发送适当的字符代码.

但是,这是实现定义的,并不保证可以在所有平台上运行.

例如,在Linux/UNIX中,如果终端支持ANSI转义码,则可以使用ANSI转义码.

适用于我的Mac OS X的示例:

#include <iostream>

int main()
{
    std::cout << "\e[1mBold\e[0m non-bold" << std::endl; // displays Bold in bold
}
Run Code Online (Sandbox Code Playgroud)

如果你愿意,你可以采取额外步骤并创建操纵器来打开/关闭加粗:

#include <iostream>

std::ostream& bold_on(std::ostream& os)
{
    return os << "\e[1m";
}

std::ostream& bold_off(std::ostream& os)
{
    return os << "\e[0m";
}


int main()
{
    std::cout << bold_on << "bold" << bold_off << " non-bold" << std::endl; 
}
Run Code Online (Sandbox Code Playgroud)


Fal*_*nUA 5

标准c++不能输出任何格式的文本。但是,可以以粗体甚至不同颜色输出您的字符串。这取决于您使用的操作系统和您运行的终端/控制台。

例如,在Window 的控制台中,无法以粗体书写文本。
如果您使用的是Linux/Unix,那么在大多数终端模拟器和虚拟控制台中,您可以将字符串以粗体书写,甚至可以为其选择颜色,只需\e[1m在字符串之前和\e[0m字符串之后添加以确保其他字符串不会是粗体。

\e 是转义符。在 Vim 中,您只需按 即可编写它ctrl + v + esc

这是 Linux/Unix 的一个简单示例(Mac 也是 Unix):

char esc_char = 27; // the decimal code for escape character is 27
cout << esc_char << "[1m" << "Hello Bold!" << esc_char << "[0m" << endl;
Run Code Online (Sandbox Code Playgroud)