1. ホーム
  2. c++

カレントディレクトリを取得するには?

2023-08-05 19:10:52

質問

私はC#とDelphi ,でこれをやっているが、C++は悪である。目的は、カレントディレクトリ(実行可能ファイルが実行されている場所)にファイルを作成することです。

私のコードです。

LPTSTR NPath = NULL;
DWORD a = GetCurrentDirectory(MAX_PATH,NPath);
HANDLE hNewFile = CreateFile(NPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

GetCurrentDirectory()で例外が発生します。

なぜ例外が発生するのか、またC++でどうすれば簡単にできるのか教えてください。

どのように解決するのですか?

足元を固めるのに役立つので、先にC++の本を読んでおくことをお勧めします。 アクセラレイテッド C++ は素晴らしい本です。

実行ファイルのパスを取得するには モジュールファイル名 :

TCHAR buffer[MAX_PATH] = { 0 };
GetModuleFileName( NULL, buffer, MAX_PATH );

ファイル名なしでディレクトリを取得するC++の関数を紹介します。

#include <windows.h>
#include <string>
#include <iostream>

std::wstring ExePath() {
    TCHAR buffer[MAX_PATH] = { 0 };
    GetModuleFileName( NULL, buffer, MAX_PATH );
    std::wstring::size_type pos = std::wstring(buffer).find_last_of(L"\\/");
    return std::wstring(buffer).substr(0, pos);
}

int main() {
    std::cout << "my directory is " << ExePath() << "\n";
}