使用变音符号时,C strlen() 返回错误的字符串长度(字符数)

问题描述 投票:0回答:1

我正在开发一个 C 程序,它接受参数形式的输入,然后需要字符串的长度才能继续工作。

不幸的是,在输入上使用

strlen()
时,我面临着一个巨大的问题,即字符串的字符计数错误,其中包含变音符号,因为该函数将变音符号计为两个字符!

示例:

strlen("abc"); //-> 3
strlen("äbc"); //-> 4
strlen("äöü"); //-> 6

有没有办法即使在使用变音符号时也能获得实际字符数?我确实不需要需要以字节为单位的字符串长度。

c string character-encoding character strlen
1个回答
0
投票

strlen()
不返回字符数,而是返回字符串的字节数 (
char
)。 没有像“äöü”这样的 2 个字节长的 ascii 字符。 它存在用于 unicode 字符串的
wchar_t
类型 (C++)。

© www.soinside.com 2019 - 2024. All rights reserved.