Разверните переменные среды в Qt (эквивалент getenv)

Я ищу эквивалент функции getenv.

Ответ 1

Qt имеет обертку вокруг getenv(), называемую qgetenv().

QByteArray qgetenv ( const char * varName )

getenv() - стандартная функция, но Visual Studio устарела, поэтому Qt предоставляет оболочку qgetenv().

Обратите внимание, что если вы хотите получить стандартные расположения файловой системы (например, домашний каталог, каталог данных приложения и т.д.), вы должны использовать QDesktopServices::storageLocation() (Qt 4) или QStandardPaths::writableLocation() (Qt 5).

Ответ 2

Для Qt существует также подход "высокого уровня" при доступе к переменным среды. Это работает только в том случае, если ваше приложение Qt запускается в QCoreApplication, что должно иметь место для большинства приложений Qt.

В этом случае вы можете использовать QProcessEnvironment, для версий Qt не менее 4.6. Вы можете получить доступ к текущей рабочей среде, используя

QProcessEnvironment::systemEnvironment();

и вы можете запросить любую переменную с помощью

QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");

Это должно быть более удобно, если использовать метод getenv/qgetenv в большинстве случаев, поскольку это затеняет реализацию операционной системы более общим образом, а IMHO - также более "подход Qt".