C ++에서 환경 변수에 액세스
$HOME
작성중인 C ++ 프로그램 의 환경 변수에 액세스하고 싶습니다 . 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()
C ++ Environmental & 변수에에서 액세스 하는 데 사용해야합니까 ? 약간의 지식으로 피할 수있는 문제가 있습니까?
getenv()
C ++에서 사용하는 데 많은 문제가 없습니다 . 의해 정의에 stdlib.h
되거나 표준 라이브러리 구현을 선호하는 경우 네임 스페이스 (예 : cstdlib
를 통해 함수를 포함 하고 액세스 할 수 있습니다 . 이것에 절대적으로 잘못된 것은 없습니다. 사실 이식성이 걱정이 두 버전 중 하나를 선호합니다.std::
std::getenv()
이 경우 당신 되지 이동성에 대해 우려하고 C 관리 사용하는 ++, 당신은 .NET 동등한를 사용할 수 있습니다 - . .NET이 아닌 Windows 용을 원하면 Win32 함수 를 사용하면 됩니다.System::Environment::GetEnvironmentVariable()
GetEnvironmentVariable()
코드를 조금 리팩토링하겠습니다.
std::string getEnvVar( std::string const & key ) const
{
char * val = getenv( key.c_str() );
return val == NULL ? std::string("") : std::string(val);
}
- Windows를 사용하는 경우 Win32 API GetEnvironmentVariable을 사용할 수 있습니다.
- 다른 리눅스 / 유닉스 기반 시스템에서는 getenv를 사용하십시오.
Windows 에서 MSDN getenv의 GetEnvironmentVariable을 사용하는 이유 :
getenv는 작동 라이브러리에 액세스 할 수있는 데이터 구조에서 작동하며 운영 환경에서 프로세스를 위해 작동하며 "세그먼트"에서는 작동하지 않습니다. 따라서 main 또는 wmain에 envp 인수를 사용하는 프로그램은 잘못된 정보를 검색 할 수 있습니다.
그리고 MSDN GetEnvironment에서 :
이 함수는 시스템 환경 변수 또는 사용자 환경 변수를 검색 할 수 있습니다.
C ++에서는 std :: getenv를 사용합니다. #include <cstdlib>
참고 URL : https://stackoverflow.com/questions/631664/accessing-environment-variables-in-c
'ProgramingTip' 카테고리의 다른 글
Java에 SoftHashMap이 있습니까? (0) | 2020.11.25 |
---|---|
Excel 스프레드 시트 열을 SQL Server 데이터베이스로 가져 오기 (0) | 2020.11.24 |
WCFTestClient HTTP 요청이 클라이언트 인증 체계 '익명'으로 인증되지 않은 것입니다. (0) | 2020.11.24 |
Reflection을 사용하여 내부 클래스에 액세스하는 방법 (0) | 2020.11.24 |
WPF의 GroupBox는 하나의 요소 만 포함 할 수 있습니까? (0) | 2020.11.24 |