操作多字节字符的字符串。

3

我是一名初学者的C程序员。我想写一个C程序,有时候涉及英文文本(适合8位字符),有时候涉及日文文本(需要16位)。

如果我使用相同的代码处理两种语言的文本,是否需要为每个字符都保留16位?

有哪些多字节字符的编码方式?

如果编译器无法紧凑存储多字节字符串会怎样?

我很困惑。请帮助我解决这个问题。请附上代码示例支持您的答案。另外,请在C ++的上下文中解释相同的内容,因为我也正在学习C ++并且对这种语言具有初学者级别的经验。

提前感谢。

这是几天前问一个熟人的面试题。


你使用的是哪个SDK,Visual Studio吗? - A B
2
UTF-8是首选。 - Jim Balter
1
@JimBalter:对于输入和输出,当然是这样。但对于中间处理,完整的16位肯定更方便吧?使用UTF8会使所有基本字符串处理变得更加复杂。 - Jongware
@Angew 我同意你的观点。 - Animesh
1
在我们分享链接的同时,另一个相关的阅读材料是:UTF-8无处不在 - Angew is no longer proud of SO
显示剩余3条评论
2个回答

1
在C ++中,你可以使用std::wstring,它使用wchar_t作为底层的char类型。在C ++11中,根据所需字符的存储量,你也可以使用std::u16stringstd::u32string
C语言中也有<wchar.h>中定义的wchar_t

0

好的,在进行一些研究后,我想我得到了一个答案:

mbstowcs(“多字节字符串转宽字符字符串”)和wcstombs(“宽字符字符串转多字节字符串”)在wchar_t数组(其中每个字符占16位或两个字节)和多字节字符串之间进行转换(其中如果可能,单个字符存储在一个字节中)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接