【问题标题】:How can I store coloured text in variable?如何将彩色文本存储在变量中?
【发布时间】:2020-10-17 23:06:52
【问题描述】:

我想将文本及其颜色存储在变量中,然后我可以cout。 我试过用这样的字符串来做,但它不起作用。 我想在不同的单词上有不同的颜色并将其存储在一个变量中。

string e = "text\ntext" + SetConsoleTextAttribute(hConsole,64) + 
           "\ntext" + SetConsoleTextAttribute(hConsole,32);
cout<<e;
[Error] invalid operands of types 'const char*' and 'const char [6]' to binary
'operator+'

【问题讨论】:

  • 显式转换SetConsoleTextAttribute(): std::string(SetConsoleTextAttribute(hConsole,64))
  • std::cout 不知道如何更改颜色;它只知道如何写字符。您不能将任何内容放入字符串中,这会导致 std::cout 改变颜色。

标签: c++ string winapi colors


【解决方案1】:

首先,SetConsoleTextAttribute 函数 - “设置由 WriteFile 或 WriteConsole 函数写入控制台屏幕缓冲区,或由 ReadFile 或 ReadConsole 函数回显的字符的属性。此函数影响函数调用后写入的文本。”这意味着它不会以任何方式影响您的变量,如果它有问题,它会返回 0,或者如果它没问题,它会返回 0。此函数仅影响控制台输出(函数调用后将写入的文本)。

For more info

例子:

    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),64);
    cout << "text\ntext";

【讨论】:

  • 在c++中有没有其他改变文本颜色的方法?
  • C++ 没有颜色的概念。只有控制台可以。因此,除非控制台通过cout 接受颜色转义码,否则您将不得不使用特定于控制台的 API。
猜你喜欢
  • 2014-10-01
  • 2019-09-19
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 2022-07-29
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
相关资源
最近更新 更多