繁体   English   中英

将“ const char *”发送到类型为“ const uint8_t *”的参数时出错

[英]Sending 'const char *' to parameter of type 'const uint8_t *' error

我正在编码一个iOS App,其中我在Constants文件中声明了一个字符串常量:

NSString * const kHeader = @"name,age,gender";

并在Constants.h中

FOUNDATION_EXPORT NSString * const kHeader;

并尝试将此字符串写入ViewController类中的NSOutput流,如下所示:

[outputStream写:[kHeader UTF8String] maxLength:[kHeader长度]];

这显示了一个编译器警告:将'const char *'发送到'const uint8_t *'类型的参数(aka'const unsigned char *')会在指针之间转换为具有不同符号的整数类型

这是什么意思? 我该如何解决? 请帮忙。 Googl'ing并没有产生太多有用的结果。

除了有符号/无符号指针警告外,您的代码实际上还可能是错误的 [kHeader length]返回字符串中的Unicode字符数,该数字可以与[kHeader UTF8String]返回的UTF-8字节数不同。

例如, @"€"具有一个Unicode字符,但具有3个UTF-8字节。

所以你应该用

const char *utf8string = [kHeader UTF8String];
[outputStream write:(const uint8_t *)utf8string maxLength:strlen(utf8string)];

或者

NSData *data = [kHeader dataUsingEncoding:NSUTF8StringEncoding];
[outputStream write:[data bytes] maxLength:[data length]];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM