我有一个环境变量,它是一个数组。我需要从我的c ++应用程序中获取并设置它。如何使用std :: map获取此信息。我能够在tcl中轻松使用数组和数组获取。 tcl例子:
set myenvarray(key1) val1
set myenvarray(key2) val2
set env(myarray) [array get myenvarray]
由于
答案 0 :(得分:1)
假设您有以下环境变量格式:[key1,val1][key2,val2]
。您可以使用getenv("varname")
获取变量的内容。
然后,您可以使用简单的Regex迭代键值对并将它们添加到地图中。
#include <iostream>
#include <map>
#include <regex>
using namespace std;
int main()
{
string env = "[key1,val1][key2,val2]"; //getenv("varname");
regex rx("\\[([^,]+),([^\\]]+)\\]");
map<string, string> res;
for(regex_iterator<string::iterator> it(env.begin(), env.end(), rx), end; it != end; it++)
res[(*it)[1]] = (*it)[2];
for(auto it : res)
cout << it.first << " = " << it.second << endl;
return 0;
}