我的代码在 Windows 10 下运行良好,但昨天我尝试在 Windows 7 下运行它。必须将 ucrtbase.dll 添加到程序目录,否则程序在启动时崩溃。以为现在一切都很好..但发现日志文件和其他一些文件总是空的。我没有 .imbue(".utf8") 的文件不是空的,并且充满了预期的信息它总是有一个新问题。这真的让我筋疲力尽。而现在,我只是找不到任何解决这个问题的方法,所以我真的希望在这里找到帮助
这是一些在 Windows 7 上无法正常工作的代码示例
int wmain(int argCount, wchar_t* argValues[])
{
UNREFERENCED_PARAMETER(_setmode(_fileno(stdout), conhelper::_O_U16TEXT));
UNREFERENCED_PARAMETER(_setmode(_fileno(stdin), conhelper::_O_U16TEXT));
UNREFERENCED_PARAMETER(_setmode(_fileno(stderr), conhelper::_O_U16TEXT));
_wsetlocale(LC_ALL, L".utf8");
std::locale locUTF8(".utf8");
std::wofstream master;
master.imbue(locUTF8);
master.open(L"woof.txt", std::ios::trunc);
master << L"Are you gonna work properly in this life or at least in another one... please..";
master.close();
return 69;
}
在 woof.txt 中的 windows 10 下输出 - “你会在今生或至少在另一个生活中正常工作......拜托......”
在 woof.txt 中的 windows 7 下输出 - ""
使用 utf8 会导致一些输出预计使用不同的语言,例如俄语。如何让我的程序在 win7 或 win10 或其他窗口下按预期运行?
如果我写的东西很难理解,我很抱歉,不是母语人士,这是我第一次尝试在 stackoverflow 上提问