c++ - 如何计算存储在另一个字符串变量中的字符串变量的值

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

但必须有更好的方法。

最佳答案

使用 map :

#include <map>

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

然后:

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

关于c++ - 如何计算存储在另一个字符串变量中的字符串变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52450311/

相关文章:

C++ 测试宏定义类型信息的值

c++ - 它是 C++11 中互锁单链表的正确实现吗

c++ - 如何将可调用对象放入 C++ 中的映射中?

c++ - Qt 4.8.0 - 未列出 MySQL 驱动程序

c++ - 将 const wchar_t* 转换为 WCHAR*

c++ - mingw 的 gcc-5.3 下具有混合位域和枚举声明的意外 sizeof 结构

c++ - QUdpSocket 绑定(bind)失败

c++ - 基类的私有(private)虚函数被派生的私有(private)虚函数隐藏

c++ - boost bind.hpp 1.54 c++ 专用模板无法在 Solaris 上编译。有效的 C++?

c++ - 事件驱动编程 : callback vs message polling