所以,我试图使用“Windows.h”输出unicode字符与wchar_t* 控制台,我发现在互联网上,这是我应该使用的代码:
wchar_t *screen = new wchar_t[nScreenWidth*nScreenHeight];
HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
SetConsoleActiveScreenBuffer(hConsole);
DWORD dwBytesWritten = 0;
while(1) {
screen[nScreenWidth * nScreenHeight - 1] = '\0';
WriteConsoleOutputCharacter(hConsole, screen, nScreenWidth * nScreenHeight, { 0,0 }, &dwBytesWritten);
}
然而,当我尝试编译时,我得到了这个错误:无法将'wchar_t*'转换为'LPCSTR' {也称为'const char *'} gcc
我用mingw 64编译,我用这个命令:
"-std=c++20",
"-g",
"${workspaceFolder}/*.cpp",
"-L",
"${workspaceFolder}\\src\\lib",
"-I",
"${workspaceFolder}\\src\\include",
"-l",
"mingw32" ,"-l",
"SDL2main" ,"-l",
"SDL2",
"-o",
"main",
(从技术上讲,我也在使用SDL 2,但目前不需要)
感谢您发送编修。
1条答案
按热度按时间twh00eeo1#
WriteConsoleOutputCharacter
是WriteConsoleOutputCharacterW
或WriteConsoleOutputCharacterA
的宏,具体取决于字符集编译器选项。WriteConsoleOutputCharacterW
接受LPCWSTR(如果编译器不支持wchar_t,则也称为const WCHAR*
或const wchar_t *
或const unsigned short *
)作为参数。WriteConsoleOutputCharacterA
接受LPCSTR(也称为const char *
)作为参数。因此,请检查编译设置,确保实际调用的是哪个版本,并将
screen
定义为正确的类型。如果不确定或者您想同时支持这两种类型,您可以使用TCHAR字符串/缓冲区代替。
TCHAR
是WCHAR
或char
的宏,取决于相同的编译器选项。而LPCSTR/LPSTR是指针类型的宏。