宽字符/字符串对 C 程序的影响

Effect of Wide Characters/ Strings on a C Program

以下是 Programming Windows 一书的旧版本节选,作者是 Charles Petzold

There are, of course, certain disadvantages to using Unicode. First and foremost is that every string in your program will occupy twice as much space. In addition, you'll observe that the functions in the wide-character run-time library are larger than the usual functions.

为什么我的程序中的每个字符串都会占用两倍的字节,而不仅仅是我们声明为存储 wchar_t 类型的字符数组应该这样做?

是否存在某些条件,如果一个程序能够使用 Long 值,那么它将运行的整个程序模式都会改变?

通常如果我们声明一个long int,我们从不大惊小怪或提及所有int将占用双倍内存的事实现在。字符串是某种特殊情况吗?

如果字符串可能包含 ascii 范围之外的字符,则必须将其声明为宽字符串。所以程序中的大多数字符串都会更大。就个人而言,我不会担心。如果你需要 Unicode,你就需要 Unicode,再多几个字节也不会要你的命。

你说的好像是这个,我同意。但问题是在自以为是和 objective.

之间划清界限

Unicode 有一些类型:utf8、utf16 utf32。 https://en.wikipedia.org/wiki/Unicode。 你可以查看他们的优势,劣势来知道你应该使用什么情况。

参考:UTF-8, UTF-16, and UTF-32

Why would every string in my program occupy twice the bytes, should not only the character arrays we've declared as storing wchar_t type do so?

据我了解,这意味着,如果您有一个使用 char * 的程序,现在您重写该程序以使用 wchar_t * 然后 它将使用(多于)两倍的字节。