Este team de expertos pasados muchos días de trabajo y de juntar de información, dimos con la solución, nuestro deseo es que te sea útil en tu trabajo.
Solución:
No hay nada de malo en usar getenv()
en C ++. Está definido por stdlib.h
, o si prefiere la implementación de la biblioteca estándar, puede incluir cstdlib
y acceder a la función a través del std::
espacio de nombres (es decir, std::getenv()
). Absolutamente nada de malo en esto. De hecho, si le preocupa la portabilidad, se prefiere cualquiera de estas dos versiones.
Si usted es no preocupado por la portabilidad y está usando C ++ administrado, puede usar el equivalente de .NET – System::Environment::GetEnvironmentVariable()
. Si desea el equivalente que no es de .NET para Windows, simplemente puede usar el GetEnvironmentVariable()
Función Win32.
Simplemente refactorizaría el código un poco:
std::string getEnvVar( std::string const & key ) const
char * val = getenv( key.c_str() );
return val == NULL ? std::string("") : std::string(val);
- Si está en Windows, puede usar la API Win32 GetEnvironmentVariable
- En otros sistemas basados en Linux / Unix, use getenv
Por qué utilizar GetEnvironmentVariable en Windows, de MSDN getenv:
getenv opera solo en las estructuras de datos accesibles a la biblioteca en tiempo de ejecución y no en el “segmento” del entorno creado para el proceso por el sistema operativo. Por lo tanto, los programas que usan el argumento envp para main o wmain pueden recuperar información no válida.
Y de MSDN GetEnvironment:
Esta función puede recuperar una variable de entorno del sistema o una variable de entorno de usuario.
Reseñas y puntuaciones
Eres capaz de añadir valor a nuestra información contribuyendo tu veteranía en las críticas.