3

以前我以为C++ std::string 只能支持ASCII字符集。对于其他字符集,例如法语、日语字符,将需要 UTF-8/UTF-16 等编码。

我只是尝试下面的代码,似乎 C++ std::string 已经支持日文字符和法文。Guess 还支持所有其他语言。

怎么会发生?这是否意味着我们只需要 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年のの返るるで振り返る恒例の「创作熟语」の优秀字㒺0相作品をる世㒺0相作品をし

Vélo, sac, appareil 照片:bleu en un «Klein» d'œil pour Noël

4

1 回答 1

4

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

如果您在代码中假设您的代码中的一个对应于屏幕上的一个字符,那么事情可能会char崩溃std:: string。正如您可能已经知道的那样,UTF-8 并非如此。

于 2018-12-17T12:24:17.010 回答