如何确定存储在另一个字符串变量中的字符串变量的值

时间:2018-09-21 19:53:00

标签: c++

我是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";
}

但是必须有更好的方法。

1 个答案:

答案 0 :(得分:1)

使用地图:

#include <map>

static const std::map<std::string, std::string> colors = {
    { "RED", "\x1b[31m" },
    { "BLUE", "..." },
    { "GREEN", "..." }
};

然后:

std::cout << colors[DEFCOLOR] << "\n";