私は<CacheDir>
がの値である<CacheDir>/myProjectName
に書きたい:C++コードからプロジェクト名を取得する方法は?
QStandardPaths::writableLocation(QStandardPaths::CacheLocation)
しかし、それは更新する2ヶ所を作成しますので、私はC++で私のプロジェクト名をハードコーディングする必要はありません。それをプログラム的に入手する方法はありますか?
私は<CacheDir>
がの値である<CacheDir>/myProjectName
に書きたい:C++コードからプロジェクト名を取得する方法は?
QStandardPaths::writableLocation(QStandardPaths::CacheLocation)
しかし、それは更新する2ヶ所を作成しますので、私はC++で私のプロジェクト名をハードコーディングする必要はありません。それをプログラム的に入手する方法はありますか?
アプリケーション名を扱う標準的なQtの方法は、QCoreApplication::applicationName()です。もちろん、どこかで(通常はアプリケーションを作成するmain()関数で)設定する必要があります。
これを実行すると、実際にアプリケーション固有のQStandardPathの一部としてアプリケーション名が使用されます。 CacheLocationのドキュメントでは、ウィンドウの場合、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」を定義しますか?コンパイル時にプログラムに名前を付けるには、そのことが必要です(何でも)。ファイル内の 'define'や変数、*他の何か*。言語としてのC++には「プロジェクト名」という概念はないので、何を定義するにしても、コンパイル時に何らかの方法でそれを公開する必要があります。 –