c++ - 如何计算存储在另一个字符串变量中的字符串变量的值
问题描述
我是 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";
}
但必须有更好的方法。
解决方案
使用地图:
#include <map>
static const std::map<std::string, std::string> colors = {
{ "RED", "\x1b[31m" },
{ "BLUE", "..." },
{ "GREEN", "..." }
};
然后:
std::cout << colors[DEFCOLOR] << "\n";
推荐阅读
- statistics - Z3统计意义
- javascript - 反应中心 div
- javascript - 带有nodejs axios的数组文件下载器和香草javascript中的异步等待模式
- excel - 如何在 VBA 中调用函数/返回值?
- regex - 使用正则表达式捕获不带引号的双引号内的字符串
- c - 如何使用c通过rabbitmq发送和接收protobuf数据
- tensorflow.js - tf 模型无法加载到 tfjs
- sql - 如何从该列中获取年份?(甲骨文顶点)
- arrays - 是否有程序可以创建一个程序来创建另一个程序?
- reactjs - Reactjs 在链接组件中使用状态