【发布时间】:2014-09-23 13:13:42
【问题描述】:
我在 Unix 控制台中使用 ANSI 颜色代码来格式化我的输出。
const auto& getCode(Color mColor)
{
static std::map<Color, std::string> codes;
// ...
return codes[mColor]
}
cout << getCode(Color::Red) << "red text";
但是,当使用std::setw 或std::left 等操纵符时,结果会受到颜色代码的影响,因为它是一堆字符。
我应该如何处理这个问题?有没有办法让流操纵器忽略颜色代码?
【问题讨论】:
-
你的意思是让它们原封不动地通过而不影响其他任何东西?
getCode的定义是什么? -
你的函数返回int还是char?请与我们分享 getCode 原型。
-
getCode 是带有输出流运算符的结构吗?也许您对设置和恢复 iostream 标志感兴趣:stackoverflow.com/questions/4217704/…
-
@Sven:更好的函数返回一个可流式传输的
struct。 -
我怀疑你的意思是 ANSI 颜色代码? ASCII 不定义颜色。
标签: c++ c++11 console iostream manipulators