C++ Builder 参考手册 ➙ System::Sysutils ➙ IsLeadChar
判断一个字符是否为多字节字符当中的第一个字符
头文件:#include
命名空间:System::Sysutils
函数原型:
bool __fastcall IsLeadChar(char C);
bool __fastcall IsLeadChar(System::Byte C);
bool __fastcall IsLeadChar(System::WideChar C);
参数:
- C:字符,
char 和 Byte 类型为 ANSI 编码的一个字符/编码单元,
WideChar 类型为 UTF-16 编码的一个字符/编码单元;
返回值:
- true:
如果是 ANSI 编码:字符 C 可以作为 ANSI 编码的 Lead Char,如果在字符串里面,这个字符和这个字符后面的一个字符组合为一个 2 字节的 ANSI 字符;
如果是 UTF-16 编码,字符 C 为 Lead Surrogate,如果在字符串里面,这个字符和这个字符后面的一个字符组合为一个 4 个字节的 UNICODE 字符; - false:
如果是 ANSI 编码,这个字符不能和后面的字符组合在一起作为2个字节的 ANSI 字符;
如果是 UTF-16 编码,这个字符不能和后面的字符组合在一起作为4个字节的UNICODE字符。 - 注1:ANSI 编码的字符,同一个字符值,可能即能和前面字符组合为一个2个字节的字符,也能和后面字符组合为一个2个字节的字符,这就需要从字符串的第一个字符开始逐个字符解析才能得到正确的结果,如果从字符串中间任意位置开始解析,可能得到错误结果 (乱码);
- 注2:UTF-16 编码的字符,如果一个字符是和后面字符组合为一个4字节UNICODE字符,那么他始终是和后面字符组合的,不能和前面字符组合,如果是和前面字符组合的,就肯定不能和后面字符组合,所以 UTF-16 编码的字符串可以从中间任意位置解析也不会乱码。
相关:
- System::Widestrutils::IsUTF8LeadByte
- System::Widestrutils::IsUTF8TrailByte
- System::Widestrutils
- System::UnicodeString::IsLeadSurrogate
- System::UnicodeString::IsTrailSurrogate
- System::UnicodeString
- System::AnsiStringBase::IsLeadByte
- System::AnsiStringBase::IsTrailByte
- System::AnsiStringBase
- System
- System::Sysutils::IsLeadChar
- System::Sysutils::CharToElementIndex
- System::Sysutils::CharToElementLen
- System::Sysutils::ElementToCharIndex
- System::Sysutils::ElementToCharLen
- System::Sysutils::BytesOf
- System::Sysutils::WideBytesOf
- System::Sysutils::PlatformBytesOf
- System::Sysutils::StringOf
- System::Sysutils::WideStringOf
- System::Sysutils::PlatformStringOf
- System::Sysutils::ByteLength
- System::Sysutils::CharLength
- System::Sysutils::StrCharLength
- System::Sysutils::AnsiLastChar
- System::Sysutils::AnsiStrLastChar
- System::Sysutils::AnsiPos
- System::Sysutils::AnsiStrPos
- System::Sysutils::AnsiStrScan
- System::Sysutils::AnsiStrRScan
- System::Sysutils
- std::mblen
- std::_mbstrlen
- std::strlen, std::_fstrlen, std::_tcslen, std::wcslen
C++ Builder 参考手册 ➙ System::Sysutils ➙ IsLeadChar