Я ищу эквивалент функции getenv.
Разверните переменные среды в Qt (эквивалент 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".