为什么C ++ std :: string可以支持日文,法文字符?

时间:2018-12-17 12:17:00

标签: c++ utf-8 character-encoding cjk french

以前,我认为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)

1 个答案:

答案 0 :(得分:3)

comp可以支持任意字节流,包括UTF-8,这就是您在此处看到的。在输入端,您的编译器显然支持它,而在输出端,您的终端程序支持。

如果您在代码中假设std::string中的一个char对应于屏幕上的一个字符,则可能会导致故障。正如您可能已经知道的,对于UTF-8而言并非如此。