C++ 环境变量

标签 c++ types environment-variables

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

我想做的是(将变量设置为 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/

相关文章:

c++ - 如何使用 ODBC 获取整数值?

c++ - 自定义编译标志以启用特定功能

python - Pyodbc 数字的默认类型

Scala 类型证据

c++ - Qt:识别 QTreeView 的项目

c++ - 程序正在打印意外的空行

java - 如何序列化接口(interface)?

angular - SSR 在 Angular 中获取错误的环境

go - 在Go项目中访问静态文件

ruby-on-rails - 在 .bashrc 环境变量中存储 Amazon S3 凭证会导致 Rails 应用程序失败