我正在读取日本游戏中的字符串,我试图在控制台窗口中显示它并将字符串复制到剪贴板。到目前为止,我已经设法在控制台中显示它,但每当我尝试将其复制到剪贴板时,字符串就会失真。我试图搜索问题,但主要是那些在控制台中显示字符串的人,我没有遇到任何问题。
void toClipboard(const string &s) {
OpenClipboard(0);
EmptyClipboard();
HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, s.size());
if (!hg) {
CloseClipboard();
return;
}
memcpy(GlobalLock(hg), s.c_str(), s.size());
GlobalUnlock(hg);
SetClipboardData(CF_TEXT, hg);
CloseClipboard();
GlobalFree(hg);
}
日语文本在 cout 之后正确显示在控制台中,但是存储的剪贴板值类似于: y•zuƒXƒ~。我不知道为什么它在我输出到控制台时工作正常,因为从内存中读取的字符串也会像在剪贴板中一样失真。这是剪贴板功能,如果它会有所帮助:
{{1}}
我也尝试使用 wchar_t 和 wstring 来处理字符串,但我得到的符号与预期完全不同。
如果重要,我的系统区域设置当前设置为日语。
我在这里做错了什么?