1. ホーム
  2. c++

[解決済み] C++で環境変数にアクセスする

2023-04-05 16:09:26

質問

私は $HOME 環境変数にアクセスしたいのですが。もし私が 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;                                                                        
}           

を使うべきでしょうか? getenv() を使って環境変数にアクセスすべきでしょうか?ちょっとした知識で避けられるような、ぶつかりそうな問題はありますか?

どのように解決するのですか?

を使用することは問題ありません。 getenv() を使うことは何も問題ありません。 定義されているのは stdlib.h で定義されていますが、標準ライブラリの実装を好んで使う場合は cstdlib をインクルードし、関数にアクセスするには std:: の名前空間(つまり std::getenv() ). これには全く問題がありません。 実際、移植性を重視するのであれば、この2つのバージョンのどちらかが好ましいでしょう。

もしあなたが ではなく ポータビリティを気にせず、マネージド C++ を使用している場合は、.NET に相当する System::Environment::GetEnvironmentVariable() . もしWindowsで.NET以外の同等のものが欲しければ、単に GetEnvironmentVariable() Win32の関数です。