Jam*_*son 64 c++ environment-variables
我想$HOME在我正在编写的C++程序中访问环境变量.如果我用C编写代码,我只是使用该getenv()函数,但我想知道是否有更好的方法来实现它.这是我到目前为止的代码:
std::string get_env_var( std::string const & key ) {
char * val;
val = getenv( key.c_str() );
std::string retval = "";
if (val != NULL) {
retval = val;
}
return retval;
}
Run Code Online (Sandbox Code Playgroud)
我应该用getenv()C++访问环境变量吗?是否有任何我可能遇到的问题,我可以通过一点点知识来避免?
Mat*_*vis 62
getenv()在C++中使用没有任何问题.它由stdlib.h,或者如果您更喜欢标准库实现,您可以cstdlib通过std::命名空间包含和访问该函数(即,std::getenv()).这绝对没有错.实际上,如果您担心可移植性,则首选这两个版本中的任何一个.
如果您不关心可移植性并且使用托管C++,则可以使用.NET等效项 - System::Environment::GetEnvironmentVariable().如果你想要Windows的非.NET等价物,你可以简单地使用GetEnvironmentVariable()Win32功能.
小智 26
我只想稍微重构一下代码:
std::string getEnvVar( std::string const & key ) const
{
char * val = getenv( key.c_str() );
return val == NULL ? std::string("") : std::string(val);
}
Run Code Online (Sandbox Code Playgroud)
Bri*_*ndy 18
为什么在Windows中使用GetEnvironmentVariable,来自MSDN getenv:
getenv仅对运行时库可访问的数据结构进行操作,而不对操作系统为进程创建的环境"段"进行操作.因此,对main或wmain使用envp参数的程序可能会检索无效信息.
此函数可以检索系统环境变量或用户环境变量.
| 归档时间: |
|
| 查看次数: |
80672 次 |
| 最近记录: |