Ce face std::getenv
Variabilele de mediu sunt perechi nume=valoare primite de program de la sistem: HOME (directorul utilizatorului), PATH, LANG sau variabile de configurare puse de tine (DB_PAROLA, MOD_DEBUG).
std::getenv returnează un pointer la valoare sau nullptr dacă variabila nu există. Verifică mereu pointerul înainte să-l folosești; transformarea directă în std::string a unui nullptr este comportament nedefinit. Nu modifica textul primit.
Parametri
| Parametru | Descriere |
|---|---|
nume |
Numele variabilei. |
Ce returnează
Pointer la valoare, sau nullptr.
Exemple
Exemplul 1: Directorul utilizatorului
#include <cstdlib>
#include <print>
int main() {
if (const char* home = std::getenv("HOME")) {
std::println("HOME = {}", home);
}
}
Rezultat posibil (diferă la fiecare rulare)
HOME = /Users/ana
Exemplul 2: Variabilă lipsă, cu valoare implicită
#include <cstdlib>
#include <print>
#include <string>
std::string din_mediu(const char* nume, const std::string& implicit) {
const char* valoare = std::getenv(nume);
return valoare ? valoare : implicit;
}
int main() {
std::println("PATH este setat: {}", std::getenv("PATH") != nullptr);
std::println("Port: {}", din_mediu("DEXBLOG_PORT_INEXISTENT", "8080"));
}
Rezultat
PATH este setat: true
Port: 8080
Greșeli frecvente
- Scrii
std::string s = std::getenv("X");fără verificare: dacă variabila lipsește, programul se oprește brusc.
Comenzi înrudite
std::system: Rulează o comandă în shell-ul sistemului de operare și așteaptă să se termine.std::exit: Oprește imediat programul cu un cod de ieșire; rulează funcțiile atexit și distruge obiectele statice, dar nu și pe cele locale.