Так что я стараюсь
char buffer[1000]; GetEnvironmentVariable("PATH",(char*)&buffer,sizeof(buffer)); std::cout << buffer << std::endl;
чтобы проверить, существует ли он, но я не вижу, как увидеть, пусто ли оно? И это очень плохой вывод = (
MSDN имеет это, чтобы сказать о GetEnvironmentVariable:
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 }
Когда переменная среды не установлена, GetEnvironmentVariable возвращает 0, а GetLastError () возвращает ERROR_ENVVAR_NOT_FOUND (203).
Просмотрите документацию: http://msdn.microsoft.com/en-us/library/ms683188%28v=vs.85%29.aspx
Вы всегда можете использовать getenv, который возвращает ноль, если переменная не существует, и пустую строку, если она пуста.
getenv