【问题标题】:How to put the contents of getenv() into a string [duplicate]如何将 getenv() 的内容放入字符串 [重复]
【发布时间】:2011-08-17 13:22:22
【问题描述】:

可能重复:
How to read Linux environment variables in c++

如何更改以下内容以完成它应该做的事情?

string s = getenv("PATH");

【问题讨论】:

标签: c++ environment-variables


【解决方案1】:
std::string getEnvVar(std::string const& key)
{
    char const* val = getenv(key.c_str()); 
    return val == NULL ? std::string() : std::string(val);
}

【讨论】:

    【解决方案2】:

    您必须先检查getenv 是否成功:

    char const* tmp = getenv( "PATH" );
    if ( tmp == NULL ) {
        //  Big problem...
    } else {
        std::string s( tmp );
        //  ...
    }
    

    (假设我猜对了“它是什么 应该做的”。)

    【讨论】:

    • +1 在将 null char* 指针传递给 String 构造函数时,您可以通过详细说明未定义行为的“大问题”来使您的答案更好。应该让 OP 意识到这个重要的细节。
    • @Als 好点。在这种情况下,如果getenv 返回一个空指针(失败),我希望一个细心的程序员想要做一些不同的事情,但绝对值得指出的是,使用空指针创建一个字符串是未定义的行为(并且 不是 一个空字符串,除非它碰巧是“未定义”的行为)。
    猜你喜欢
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多