【发布时间】:2020-10-20 09:43:28
【问题描述】:
我有一个 utf-8 格式的文件,其中包含一个字符“ů”,当我在 c++ 中使用 ifstream 读取它并 cout 时,输出为“┼»”。我可以通过添加'SetConsoleOutputCP( 65001 );'来解决它,然后我使用'SendInput();'将字符发送到另一个窗口。但是因为 SetConsoleOutput() 不影响 SendInput() 应用程序收到损坏的字符“┼»”。
问题是如何 SendInput() 重音字符?
ifstream file(path);
string str;
while (getline (file, str))
{
cout << endl << str <<endl;
for (char &c : str) {
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0;
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.dwFlags = KEYEVENTF_UNICODE;
if (isupper(c)) {
ip.ki.wVk = VK_LSHIFT;
SendInput(1, &ip, sizeof(INPUT));
} else {
ip.ki.dwFlags = KEYEVENTF_KEYUP;
ip.ki.wVk = VK_LSHIFT;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_UNICODE;
}
ip.ki.wVk = VkKeyScanA(c);
SendInput(1, &ip, sizeof(INPUT));
Sleep(100);
}
INPUT enter;
enter.type = INPUT_KEYBOARD;
enter.ki.wScan = 0;
enter.ki.time = 0;
enter.ki.dwExtraInfo = 0;
enter.ki.dwFlags = 0;
enter.ki.wVk = VK_RETURN;
SendInput(1, &enter, sizeof(INPUT));
cout << "enter pressed";
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。