Olası Çoğalt getenv() içeriğini koymak için: şu bunu yapmak gerekiyordu ne yapacağını değiştirilebilir nasıl
How to read Linux environment variables in c++Nasıl bir dizeye
?
string s = getenv("PATH");
Olası Çoğalt getenv() içeriğini koymak için: şu bunu yapmak gerekiyordu ne yapacağını değiştirilebilir nasıl
How to read Linux environment variables in c++Nasıl bir dizeye
?
string s = getenv("PATH");
Sen getenv
ilk başarılı olduğunu kontrol etmek zorunda:
char const* tmp = getenv("PATH");
if (tmp == NULL) {
// Big problem...
} else {
std::string s(tmp);
// ...
}
(Ben "o yapmak gerekeni" açısından doğru tahmin ettik varsayalım.)
+1 Cevabınızı "Büyük Problem" hakkında daha fazla ayrıntıya girerek daha iyi yapabilirsiniz.Boş char * işaretçileri String yapıcısına iletirken tanımsız davranış. OP bu önemli detayın farkında olmalıdır. –
@Als Good point. Bu durumda, 'getenv' boş bir gösterici (başarısız) döndürürse dikkatli bir programcının farklı bir şey yapmak istemesini beklerdim, ancak boş bir işaretçi ile bir dize oluşturmanın tanımlanmamış bir davranış olduğunu belirtmek gerekir (ve ** değil). ** "undefined" davranışı yanlışlıkla gerçekleşmedikçe boş bir dize. –
std::string getEnvVar(std::string const& key)
{
char const* val = getenv(key.c_str());
return val == NULL ? std::string() : std::string(val);
}
http://stackoverflow.com/questions/5866134/how-to-read-linux-environment-variables-in-c/5866166#5866166 –