我是C ++的新手。我正在尝试根据从配置文件中读取的内容来更改某些文本的颜色。
配置文件包含:
RED = DEFCOLOR
RED在头文件中定义:
static const std::string RED="\x1b[31m";
main()中的代码段
while( std::getline(cfgin, cfgline)) {
std::stringstream stream(cfgline);
if( cfgline.find("DEFCOLOR") != string::npos) {
std::stringstream stream(cfgline);
getline(stream, DEFCOLOR, '=');
}
}
DEFCOLOR 现在包含文本:RED。
有没有一种方法可以直接使用 DEFCOLOR ,就好像它是头文件中定义的RED值一样,以便执行:
cout << DEFCOLOR << "\n";
将等同于:
cout << RED << "\n";
哪个有效?前者当前打印出文本:RED。 我可以通过使用一系列if语句来检查颜色来使其工作:
if( DEFCOLOR == "RED")
{
cout << RED << "\n";
}
但是必须有更好的方法。
答案 0 :(得分:1)
使用地图:
#include <map>
static const std::map<std::string, std::string> colors = {
{ "RED", "\x1b[31m" },
{ "BLUE", "..." },
{ "GREEN", "..." }
};
然后:
std::cout << colors[DEFCOLOR] << "\n";