在C++中,FormatMessage()
是一个非常有用的函数,用于将系统错误代码转换为易于理解的消息。以下是如何正确使用FormatMessage()
的步骤:
FormatMessage()
函数将错误代码转换为消息:LPVOID lpMessageBuffer = nullptr;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMessageBuffer,
0,
NULL);完整示例代码:
#include<windows.h>
#include<iostream>
int main() {
// 故意调用一个失败的函数以获取错误代码
HANDLE hFile = CreateFile(TEXT("non_existent_file.txt"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE) {
DWORD dwError = GetLastError();
LPVOID lpMessageBuffer = nullptr;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMessageBuffer,
0,
NULL);
std::wcout << L"Error code: " << dwError<< std::endl;
std::wcout << L"Error message: " << (LPCTSTR)lpMessageBuffer<< std::endl;
LocalFree(lpMessageBuffer);
}
return 0;
}
这个示例代码首先尝试打开一个不存在的文件,以便故意产生一个错误。然后,它使用GetLastError()
函数获取错误代码,并使用FormatMessage()
将其转换为易于理解的消息。最后,它打印错误代码和消息。
领取专属 10元无门槛券
手把手带您无忧上云