我问一个代码片段,它 cin 一个 unicode 文本,将另一个 unicode 连接到第一个 unicode 文本和 cout 结果。
PS 这段代码将帮助我解决另一个更大的 unicode 问题。但在此之前,关键是完成我所要求的。
添加:顺便说一句,当我运行可执行文件时,我无法在命令行中写入任何 unicode 符号。我应该怎么做?
原文由 Narek 发布,翻译遵循 CC BY-SA 4.0 许可协议
我过去也遇到过类似的问题,在我的情况下 imbue
和 sync_with_stdio
成功了。尝试这个:
#include <iostream>
#include <locale>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
wcin.imbue(locale("en_US.UTF-8"));
wcout.imbue(locale("en_US.UTF-8"));
wstring s;
wstring t(L" la Polynésie française");
wcin >> s;
wcout << s << t << endl;
return 0;
}
原文由 Bolo 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
这是一个显示四种不同方法的示例,其中只有第三种(C
conio
)和第四种(本机 Windows API)有效(但前提是不重定向标准输入/标准输出)。请注意,您仍然需要包含要显示的字符的字体(Lucida Console 至少支持希腊语和西里尔语)。请注意,这里的所有内容都是完全不可移植的,只是没有可移植的方式在终端上输入/输出 Unicode 字符串。conio
的方法。_O_U16TEXT
有点像 Michael Kaplan 的博客中描述的那样,但似乎只有wgets
解释来自ReadFile
的(8 位)数据---
作为 UTF-16。我会在周末对此进行进一步调查。