使用linux上的getenv在c ++中读取数组环境变量

时间:2015-04-21 07:44:31

标签: c++

我有一个环境变量,它是一个数组。我需要从我的c ++应用程序中获取并设置它。如何使用std :: map获取此信息。我能够在tcl中轻松使用数组和数组获取。 tcl例子:

 set myenvarray(key1) val1
 set myenvarray(key2) val2
 set env(myarray) [array get myenvarray]

由于

1 个答案:

答案 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;
}