Как узнать, не установлена ​​ли переменная окружения? - PullRequest
0 голосов
/ 06 июля 2011

Так что я стараюсь

char buffer[1000];
GetEnvironmentVariable("PATH",(char*)&buffer,sizeof(buffer));
std::cout << buffer << std::endl;

чтобы проверить, существует ли он, но я не вижу, как увидеть, пусто ли оно? И это очень плохой вывод = (

Ответы [ 3 ]

3 голосов
/ 06 июля 2011

MSDN имеет это, чтобы сказать о GetEnvironmentVariable:

В случае сбоя функции возвращаемое значение равно нулю.Если указанная переменная среды не была найдена в блоке среды, GetLastError возвращает ERROR_ENVVAR_NOT_FOUND.

(Источник: http://msdn.microsoft.com/en-us/library/ms683188.aspx)

Так что, я думаю, вам следует проверить возвращаемое значение функции:

char buffer[1000];
if(GetEnvironmentVariable("PATH", buffer, sizeof(buffer)))
{
    // non-zero, go ahead!
    std::cout << buffer << std::endl;
}
else
{
    // zero, something went wrong
}
0 голосов
/ 06 июля 2011

Когда переменная среды не установлена, GetEnvironmentVariable возвращает 0, а GetLastError () возвращает ERROR_ENVVAR_NOT_FOUND (203).

Просмотрите документацию: http://msdn.microsoft.com/en-us/library/ms683188%28v=vs.85%29.aspx

0 голосов
/ 06 июля 2011

Вы всегда можете использовать getenv, который возвращает ноль, если переменная не существует, и пустую строку, если она пуста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...