我想在我的C++程序中将一些环境变量从shell加载到字符串中,应该如何操作?
我想在我的C++程序中将一些环境变量从shell加载到字符串中,应该如何操作?
使用getenv()函数 - 参见http://en.cppreference.com/w/cpp/utility/program/getenv。我喜欢将其封装如下:
std::string GetEnv( const std::string & var ) {
const char * val = std::getenv( var.c_str() );
if ( val == nullptr ) { // invalid to assign nullptr to std::string
return "";
}
else {
return val;
}
}
这样做可以避免环境变量不存在的问题,并且让我能够轻松地使用C++字符串来查询环境。当然,它不能让我测试环境变量是否存在,但通常在我的代码中这不是一个问题。
int main(int argc, char* argv[], char* env[]){
int i;
for(i=0;env[i]!=NULL;i++)
printf("%s\n",env[i]);
return 0;
}
这里是一篇关于你的问题的完整文章,来自我的网站。
main()
的第三个参数是非标准的,在所有平台/编译器上都不能保证可用。 - DevSolar
boost::optional<std::string>
作为返回类型来区分缺失和空值。 - Matthieu M.