在C ++中访问环境变量 [英] Accessing Environment Variables In C++

查看:117
本文介绍了在C ++中访问环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要访问我正在编写的C ++程序中的 $ HOME 环境变量。如果我在C中编写代码,我只需使用 getenv()函数,但是我想知道是否有更好的方法来实现。这是我迄今为止的代码:

I'd like to have access to the $HOME environment variable in a C++ program that I'm writing. If I were writing code in C, I'd just use the getenv() function, but I was wondering if there was a better way to do it. Here's the code that I have so far:

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;                                                                        
}           

我应该使用 getenv()访问C ++中的环境变量?有没有什么问题,我有可能遇到这种情况,我可以避免一点点的知识?

Should I use getenv() to access environment variables in C++? Are there any problems that I'm likely to run into that I can avoid with a little bit of knowledge?

推荐答案

有在C ++中使用 getenv()没有任何问题。它由 stdlib.h 定义,或者如果您更喜欢标准库实现,则可以包括 cstdlib 并访问函数通过 std :: 命名空间(即 std :: getenv())。这绝对没有错。实际上,如果你关心可移植性,这两个版本中的任何一个都是首选的。

There is nothing wrong with using getenv() in C++. It is defined by stdlib.h, or if you prefer the standard library implementation, you can include cstdlib and access the function via the std:: namespace (i.e., std::getenv()). Absolutely nothing wrong with this. In fact, if you are concerned about portability, either of these two versions is preferred.

如果你不是关心可移植性,你是使用托管C ++,您可以使用.NET等效的 - 系统::环境:: GetEnvironmentVariable() 。如果你想要Windows的非.NET等价物,你可以使用 GetEnvironmentVariable() Win32功能。

If you are not concerned about portability and you are using managed C++, you can use the .NET equivalent - System::Environment::GetEnvironmentVariable(). If you want the non-.NET equivalent for Windows, you can simply use the GetEnvironmentVariable() Win32 function.

这篇关于在C ++中访问环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆