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)
我认为问题在于混合类型,但我不知道我必须进行什么样的转换.
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)