获取字符串中的字符数

Get number of characters in string?

本文关键字:字符 字符串 获取      更新时间:2023-10-16

我有一个应用程序,接受最多255个字符的UTF-8字符串

如果字符是ASCII,(字符数==字节大小)

例如,如果字符不全是ASCII,并且包含日语字母,给定字节大小,我如何获取字符串中的字符数?

输入:char *data, int bytes_no
输出:int char_no

您可以使用mblen来计算长度或使用mbstowcs

来源:

http://www.cplusplus.com/reference/cstdlib/mblen/

http://www.cl.cam.ac.uk/~mgk25/unicode.html#mod

可以使用mbstowcs(NULL,s,0)。这适用于UTF-8,就像适用于任何其他受支持的文件一样编码,只要选择了适当的语言环境。A.计算UTF-8中字符数的硬连线技术字符串是对除0x80–0xBF范围内的字节之外的所有字节进行计数,因为这些只是延续字节,而不是它们的字符拥有然而,令人惊讶的是,计数字符的需求很少出现在应用程序中。

您可以将unicode字符保存在宽字符wchar_t

没有"字符"这回事。

或者,更准确地说,什么是"性格"取决于你问谁。

如果你查看Unicode词汇表,你会发现这个术语有几个不完全兼容的含义。作为书面语言中具有语义值(第一含义)的最小组成部分,是单个字符。如果取并计算其中Unicode字符编码(第三种含义)的基本编码单位,则可能会得到一个或两个,这取决于使用的确切表示(归一化或非归一化)。

也许不是。这是一个非常复杂的话题,没有人真正知道他们在说什么。

归根结底,您可能需要计算代码点,这与字符(意思是3)基本相同。mblen是实现这一点的一种方法,前提是您当前的语言环境具有UTF-8编码。现代C++提供了更多类似C++的方法,但是,在一些流行的实现中不支持这些方法。Boost有它自己的东西,而且更便携。还有像ICU这样的专门库,如果你的需求比计算字符复杂得多,你可能需要考虑。