Sto cercando un equivalente della funzione getenv.Espandere le variabili di ambiente in Qt (getenv equivalente)
risposta
Qt ha un wrapper getenv()
, chiamato qgetenv()
.
QByteArray qgetenv (const char * varName)
getenv()
è una funzione standard, ma Visual Studio ha deprecato che è per questo che Qt fornisce il qgetenv()
involucro.
Si noti che se si è interessati a ottenere posizioni standard del file system (come la directory home, la directory dei dati dell'applicazione, ecc.) Si dovrebbe invece usare QDesktopServices::storageLocation()
(Qt 4) o QStandardPaths::writableLocation()
(Qt 5).
per Qt, v'è anche un approccio "di alto livello" quando si accede a variabili d'ambiente. Funziona solo se l'applicazione Qt viene eseguita all'interno di un'applicazione QCore, che dovrebbe essere il caso per la maggior parte delle applicazioni Qt.
In tal caso, è possibile utilizzare QProcessEnvironment, per le versioni di Qt di almeno 4,6. È possibile accedere all'ambiente processo corrente utilizzando
QProcessEnvironment::systemEnvironment();
e si può interrogare qualsiasi variabile tramite
QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");
Questo dovrebbe essere più conveniente che utilizzando l'approccio getenv/qgetenv nella maggior parte dei casi come questo ombre il funzionamento -la implementazione del sistema in un modo più generico e IMHO è anche un approccio più "Qt-simile".
Inoltre, a differenza di 'getenv' supporta correttamente le variabili di ambiente contenenti caratteri Unicode. –
- 1. espandere i nomi dei file che hanno le variabili di ambiente nel loro percorso
- 2. Utilizzare le variabili di ambiente in CMD
- 3. Ottieni le variabili di ambiente utilizzando il codice C
- 4. Come espandere le variabili nei comandi vim?
- 5. Reagire: utilizzare le variabili di ambiente
- 6. Quali sono le mie variabili di ambiente?
- 7. Application.yml supporta le variabili di ambiente?
- 8. msbuild, come impostare le variabili di ambiente?
- 9. Imposta le variabili di ambiente sull'Engine motore
- 10. Variabili di ambiente monodiro
- 11. Impostazione delle variabili di ambiente per l'accesso in PHP
- 12. Come espandere la variabile di ambiente% CommonProgramFiles% \ system \ in .NET
- 13. Visualizza le variabili di ambiente di Windows in Cygwin
- 14. Variabili di ambiente Javascript
- 15. Come stampare tutte le variabili di ambiente in TCL?
- 16. Ottieni le variabili di ambiente in symfony2 parameters.yml
- 17. È possibile utilizzare le variabili di ambiente in php.ini?
- 18. Come impostare le variabili di ambiente in Visual Studio 2012?
- 19. Come elencare tutte le variabili di ambiente in Vim?
- 20. Come elencare tutte le variabili di ambiente in un'applicazione c/C++
- 21. Come passare le variabili ai metodi di slot in QT?
- 22. variabili di ambiente in Visual Studio 2013
- 23. Come ottenere le variabili di ambiente del sistema in PHP durante l'esecuzione di CLI e Apache2Handler?
- 24. Chiavi SSH in variabili di ambiente
- 25. Variabili di ambiente NodeJS in Grunt
- 26. Equivalente C equivalente a "Variabili variabili" di PHP
- 27. Impostazione delle variabili di ambiente su Qt Creator mediante l'acquisizione di uno script di shell
- 28. Dove posso visualizzare le variabili di ambiente di WebSphere?
- 29. Stampa elenco di TUTTE le variabili di ambiente
- 30. Script di shell per impostare le variabili di ambiente
Si tratta di una funzione che si espande ogni variabile d'ambiente, come% PATH%, ecc? Ad esempio, una variabile di ambiente personalizzata che ho impostato dalla riga di comando prima di richiamare il mio processo? – sashoalm
@satuon No. si ottiene posizioni standard come la directory home dell'utente e la directory dei dati dell'applicazione. E altri. Le variabili di ambiente personalizzate dovranno ovviamente essere recuperate con getenv(). Qt non astratta getenv(), poiché è una funzione standard disponibile su tutti i compilatori C++ standard. –
In realtà, c'è qgetenv: http://doc.qt.digia.com/qt/qtglobal.html#qgetenv Perché: "qgetenv() è stato introdotto perché getenv() dalla libreria C standard è stato deprecato in VC2005 (e versioni successive qgetenv() usa la nuova funzione di sostituzione in VC e richiama l'implementazione della libreria C standard su tutte le altre piattaforme. " –