[C++]実行ファイルのパスを取得する方法

C++で実行ファイルのパスを取得するのは少し面倒くさいです。

この記事では、C++で実行ファイルのパスを取得する方法(Windowsのみ)を解説します。

実行ファイルのパスを取得

実行ファイルのパスを取得するにはGetModuleFileNameA関数で実行ファイルのファイルパスを取得後、_splitpath_s関数でパスの分解をして、ファイル名を除いた部分を再結合します。

C++
// 実行ファイルのパスを取得
string GetModulePath()
{
    // 実行ファイルのパス
    string modulePath = "";
    // ドライブ名、ディレクトリ名、ファイル名、拡張子
    char path[MAX_PATH], drive[MAX_PATH], dir[MAX_PATH], fname[MAX_PATH], ext[MAX_PATH];

    // 実行ファイルのファイルパスを取得
    if (::GetModuleFileNameA(NULL, path, MAX_PATH) != 0)
    {
        // ファイルパスを分割
        ::_splitpath_s(path, drive, dir, fname, ext);
        // ドライブとディレクトリ名を結合して実行ファイルパスとする
        modulePath = string(drive) + string(dir);
    }

    return modulePath;
}

上記関数を実行すると「¥」で終わる実行ファイルのフルパスが取得できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です