使strncmp()接受无符号的char *作为论点

Making strncmp() accept unsigned char * as an argument

本文关键字:char 无符号 strncmp      更新时间:2023-10-16

我有一个指向"无符号char *"字符串的指针,我想将其用作strncmp()函数中的参数。但是编译器抱怨:

invalid conversion from 'unsigned char*' to 'const char*'

我该如何制作:

strncmp(const char *a, unsigned char *b, size_t size); 

工作?

有任何解决方法吗?

您可以安全地将未签名的施放到签名中。

 unsigned char * p2 = ...;
 strncmp(px, (char *)p2, 5); 

应该工作。

 unsigned char * p2 = ...;
 char * p3 = static_cast<char *>(p2);

这可能过分杀伤。

不确定为什么要使用unsigned char*,但是如果需要,请使用铸件。例如:

strncmp(a, (char*)b, 10);

使用reinterpret_cast将其转换。这样的东西 -

strncmp(const char *a, reinterpret_cast<const char*>(unsigned char
 *b), size_t size);