我想寫信給<CacheDir>/myProjectName
其中<CacheDir>
是價值:如何從C++代碼獲取項目名稱?
QStandardPaths::writableLocation(QStandardPaths::CacheLocation)
但是我不想用C寫死我的項目名稱++,因爲這將創建2個地方進行更新。有沒有什麼辦法來編程?
我想寫信給<CacheDir>/myProjectName
其中<CacheDir>
是價值:如何從C++代碼獲取項目名稱?
QStandardPaths::writableLocation(QStandardPaths::CacheLocation)
但是我不想用C寫死我的項目名稱++,因爲這將創建2個地方進行更新。有沒有什麼辦法來編程?
處理應用程序名稱的標準Qt方式是QCoreApplication::applicationName() - 當然,您必須在某處(通常在創建應用程序的main()函數中)設置該方式。
一旦你這樣做了,應用程序名稱實際上被用作應用程序特定QStandardPath的一部分 - 例如, CacheLocation的文檔說,對於Windows,CacheLocation是C:/Users/<USER>/AppData/Local/<APPNAME>/cache
,這意味着應用程序名稱已經在路徑中。
因此,對於你例如,你可以爲你的應用程序是這樣一個唯一的路徑:
auto myCacheFile = QString("%1/cache.txt")
.arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
顯式字符串連接最好用格式化字符串替換:'auto myCacheFile = QStringLiteral(「%1 /%2/cache.txt).arg(QStandardPaths:writableLocation(QStandardPaths :: CacheLocation))。arg(qApp.applicationName()) ;'。 –
什麼定義「myProjectName」?你需要這個東西(不管它是什麼)在編譯時提供你的程序名稱。無論是作爲一個'定義'或文件中的變量或*其他* *。 C++作爲一種語言沒有「項目名稱」的概念 - 所以無論什麼定義,它都需要以某種方式公開,以便在編譯期間獲得。 –