calm27 Asked:2020-05-15 16:28:27 +0000 UTC2020-05-15 16:28:27 +0000 UTC 2020-05-15 16:28:27 +0000 UTC 处理字符串时的 unsigned char* 和 char* 772 char* /const char*如果使用 not , but ,使用字符串会有问题unsigned char*/const unsigned char*吗?如果一切都正确,例如,在 中UTF-8,每个字符在从 的范围内都有自己的索引1-255。在char*范围的情况下会有所不同。 c++ 2 个回答 Voted user7860670 2020-05-15T16:41:22Z2020-05-15T16:41:22Z 在 UTF8 中,字符在 1-255 范围内没有索引,但需要 1 到 6 个字节并进行换行。对于 UTF8 编码的字符串,C++20 引入了一个单独的类型char8_t。 Best Answer αλεχολυτ 2020-05-15T17:00:38Z2020-05-15T17:00:38Z 虽然char和是三种不同的类型,但素数表示unsigned char可以是有符号的或无符号的。这是由编译器实现决定的。因此,我们可以仅考虑特定编译器和处理此类字符数组(此解释中的字符串)的函数来讨论一些问题。例如,来自 的函数,特别是,要求字符可以由范围表示,并且需要适当的强制转换才能安全使用:signed charchar<cctype>std::isalnumunsigned char 要使用普通字符(或有符号字符)安全地使用这些函数,首先应将参数转换为unsigned char 否则,结果可能是未定义的行为。
在 UTF8 中,字符在 1-255 范围内没有索引,但需要 1 到 6 个字节并进行换行。对于 UTF8 编码的字符串,C++20 引入了一个单独的类型
char8_t
。虽然
char
和是三种不同的类型,但素数表示unsigned char
可以是有符号的或无符号的。这是由编译器实现决定的。因此,我们可以仅考虑特定编译器和处理此类字符数组(此解释中的字符串)的函数来讨论一些问题。例如,来自 的函数,特别是,要求字符可以由范围表示,并且需要适当的强制转换才能安全使用:signed char
char
<cctype>
std::isalnum
unsigned char
否则,结果可能是未定义的行为。