首页 > 解决方案 > 如何计算存储在另一个字符串变量中的字符串变量的值

问题描述

我是 C++ 新手。我正在尝试根据从配置文件中读取的内容更改某些文本的颜色。

配置文件包含:

红色=去色

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

但必须有更好的方法。

标签: c++

解决方案


使用地图:

#include <map>

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

然后:

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

推荐阅读