C++环境变量

Bos*_*jan 1 c++ types environment-variables

我想要做的是获取环境变量值并在代码本身中使用它.

我想要做的是(变量设置为export UTMZONE="33T"):

char UTMZone[4] = getenv("UTMZONE");
Run Code Online (Sandbox Code Playgroud)

有了这个我收到以下错误:

error: array must be initialized with a brace-enclosed initializer
Run Code Online (Sandbox Code Playgroud)

我认为问题在于混合类型,但我不知道我必须进行什么样的转换.

Nat*_*ica 7

getenv返回一个char*.没有办法char[N]从a 初始化a char*.您需要做的是捕获指针,然后将字符串复制到数组中

char UTMZone[4];
char* ret = getenv("UTMZONE");
if (ret)
    strncpy(UTMZone, ret, 4);
else
    // abort
Run Code Online (Sandbox Code Playgroud)

也就是说,如果你可以使用a std::string,那可以从a构造char*.运用

char* ret = getenv("UTMZONE");
if (ret)
    std::string UTMZone = ret;
else
    // abort
Run Code Online (Sandbox Code Playgroud)

为您提供一个填充了环境变量的字符串.如果你需要将它传递给一个东西,需要一个char*const char*然后你可以使用data()c_str()分别成员函数.那看起来像

function_that_needs_char_star(UTMZone.data());
function_that_needs_const_char_star(UTMZone.c_str());
Run Code Online (Sandbox Code Playgroud)