希望这是一个简单的问题:在处理以多字节UTF-8字符结尾的字符串时,
**编辑抱歉如果我没有表达清楚,我并不关心缺失的字形或者字节被如何解释的问题,只是在调用
cout
似乎会失败,我做错了什么吗?这是在Win7 x64上使用GCC(Mingw)时出现的问题。**编辑抱歉如果我没有表达清楚,我并不关心缺失的字形或者字节被如何解释的问题,只是在调用
cout<<s4
之后它们没有显示出来(缺少BAR)。第一次显示后任何进一步的cout
都不显示文本!#include <cstdio>
#include <iostream>
#include <string>
int main() {
std::string s1("abc");
std::string s2("…"); // … = 0xE2 80 A6
std::string s3("…abc");
std::string s4("abc…");
//In C
fwrite(s1.c_str(), s1.size(), 1, stdout);
printf(" FOO ");
fwrite(s2.c_str(), s2.size(), 1, stdout);
printf(" BAR ");
fwrite(s3.c_str(), s3.size(), 1, stdout);
printf(" FOO ");
fwrite(s4.c_str(), s4.size(), 1, stdout);
printf(" BAR\n\n");
//C++
std::cout << s1 << " FOO " << s2 << " BAR " << s3 << " FOO " << s4 << " BAR ";
}
// results:
// abc FOO ��� BAR ���abc FOO abc… BAR
// abc FOO ��� BAR ���abc FOO abc…