【发布时间】:2017-07-02 16:07:48
【问题描述】:
我遇到了一个问题,但在互联网上找不到答案。尽管我发现了许多类似的问题,但没有一个答案对我有用。我在 Windows 10 上使用 Visual Studio 2015。
所以我的部分代码是:
wstring books[50];
wstring authors[50];
wstring genres[50];
wstring takenBy[50];
wstring additional;
bool taken[50];
_setmode(_fileno(stdout), _O_U8TEXT);
wifstream fd("bookList.txt");
i = 0;
while (!fd.eof())
{
getline(fd, books[i]);
getline(fd, authors[i]);
getline(fd, genres[i]);
getline(fd, takenBy[i]);
fd >> taken[i];
getline(fd, additional);
i++;
}
我需要的是用 C++ 读取以 UTF-8 编码的文本文件。但是,当我读取文件时,那些宽字符串发生了变化,当我打印它们时,输出文本完全不同。
输入:
ąčę
输出:
阿耶
如何避免它并正确阅读文本?
【问题讨论】:
-
为了避免我们注定要简单地重复所有“对您不起作用”的答案,也许您可以详细说明为什么现有解决方案不适用?
-
@LightnessRacesinOrbit 好吧,正如我所说,我需要从文件中获取并打印 UTF-8 字符,但是当我尝试在其他地方给出的答案和建议时,它们要么不起作用根本没有做我需要做的事情,例如,正如我已经写过的,字符串会丢失 UTF-8 字符,我想知道如何避免这种丢失。
-
更新您的问题,请不要发表评论。你能说明你在哪个平台上运行吗? Unicode 仍然有一些平台依赖性。
-
如果您使用的是 Windows 控制台,请参阅stackoverflow.com/questions/388490/…
-
这是OT,但请注意
while (!fd.eof())可能会导致unexpected results。