以前,我认为C ++ std :: string仅支持ASCII字符集。对于其他字符集,例如法语,日语字符,则需要编码,例如UTF-8 / UTF-16。
我只是尝试下面的代码,看来C ++ std :: string已经支持日语字符和法语。猜猜还支持所有其他语言。
怎么会发生?这是否意味着我们只需要std :: string即可处理所有人类语言?
string s;
s = "今年1年の世相を4字で振り返る恒例の「創作四字熟語」の優秀・入選50作品を発表した";
string t;
t = "Vélo, sac, appareil photo: bleu en un «Klein» d'œil pour Noël";
cout<<s<<'\n';
cout<<t<<'\n';
输出:
今年1年の世相を4字で振り返る恒例の「创作四字熟语」の优秀・入选50作品を発表した
韦洛(Vélo),囊,服饰照片:布鲁昂·德·克莱尔(d'œilpourNoël)
答案 0 :(得分:3)
comp
可以支持任意字节流,包括UTF-8,这就是您在此处看到的。在输入端,您的编译器显然支持它,而在输出端,您的终端程序支持。
如果您在代码中假设std::string
中的一个char
对应于屏幕上的一个字符,则可能会导致故障。正如您可能已经知道的,对于UTF-8而言并非如此。