使用 _getwch() 获取中文输入时阻塞的问题

1
int main()
{
	initgraph(960, 640, EW_SHOWCONSOLE);
	setbkcolor(WHITE);
	cleardevice();

	std::wstring str = L"";

	while (true)
	{
		if (_kbhit())
		{
			str += (TCHAR)_getwch();
		}		
	}

	return 0;
}

这段代码在获取中文输入时会进入阻塞状态,经过测试是卡在了 _getwch() 这里。

但是在获取英文输入时则不会

ava
慢热友人.

2021-4-26

0

这是控制台本来就存在的问题。

以下代码是纯粹的控制台程序,没有使用 EasyX,你可以测试一下,同样会存在你遇到的问题:

#include <Windows.h>
#include <conio.h>
#include <stdio.h>

int main()
{
	wchar_t c;

	while (true)
	{
		if (_kbhit())
		{
			c = _getwch();	//_getch() 也会产生你遇到的问题
			printf("[%c]", c);
		}

		printf(".");
		Sleep(100);
	}

	return 0;
}
ava
慢羊羊

2021-4-28

想做一个输入框控件,有别的办法吗? - 慢热友人. 2021-4-29