我想做的是获取环境变量值并在代码本身中使用它。
我想做的是(将变量设置为 export UTMZONE="33T"
):
char UTMZone[4] = getenv("UTMZONE");
我收到以下错误:
error: array must be initialized with a brace-enclosed initializer
我认为问题出在混合类型上,但我不知道我必须进行哪种类型的转换。
最佳答案
getenv
返回一个 char*
。没有办法从 char*
初始化 char[N]
。您需要做的是捕获指针,然后将字符串复制到数组中,如
char UTMZone[4];
char* ret = getenv("UTMZONE");
if (ret)
strncpy(UTMZone, ret, 4);
else
// abort
就是说,如果您可以使用 std::string
,那么它可以从 char*
构造。使用
char* ret = getenv("UTMZONE");
if (ret)
std::string UTMZone = ret;
else
// abort
为您提供一个用环境变量填充的字符串。如果你需要将它传递给需要 char*
或 const char*
的东西,那么你可以使用 data()
或 c_str()
分别是成员函数。看起来像
function_that_needs_char_star(UTMZone.data());
function_that_needs_const_char_star(UTMZone.c_str());
关于C++ 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52703119/