まず、以下のようなコードスニペットを使用して、エラーメッセージを取得します。
#include <iostream>
#include <windows.h>
void PrintLastError()
{
DWORD errorCode = GetLastError();
LPSTR errorMessage = nullptr;
FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr,
errorCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
reinterpret_cast<LPSTR>(&errorMessage),
0,
nullptr
);
std::cout << "エラーコード: " << errorCode << std::endl;
std::cout << "エラーメッセージ: " << errorMessage << std::endl;
LocalFree(errorMessage);
}
int main()
{
// エラーを発生させるコードの例
FILE* file = nullptr;
fopen_s(&file, "nonexistent_file.txt", "r");
if (file == nullptr)
{
PrintLastError();
}
return 0;
}
上記のコードでは、PrintLastError
関数を使用して最後のエラーを表示しています。GetLastError
関数を使用してエラーコードを取得し、FormatMessageA
関数を使用してエラーメッセージを取得します。エラーメッセージはUTF-8エンコーディングで取得されます。
main
関数では、エラーを発生させるためにfopen_s
関数を使用して存在しないファイルを開こうとしています。もしfopen_s
が失敗した場合、PrintLastError
関数を呼び出して最後のエラーを表示します。
この方法を使用すると、C++での最後のエラーの表示が簡単に行えます。エラーメッセージを含むブログ投稿を作成する際には、この方法が役立つでしょう。