我正在编码一个iOS App,其中我在Constants文件中声明了一个字符串常量:
NSString * const kHeader = @"name,age,gender";
并在Constants.h中
FOUNDATION_EXPORT NSString * const kHeader;
并尝试将此字符串写入ViewController类中的NSOutput流,如下所示:
[outputStream写:[kHeader UTF8String] maxLength:[kHeader长度]];
这显示了编译器警告:
向类型为“const uint8_t *”(又名“const unsigned char *”)的参数发送“const 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]];
关于ios - 将“const char *”发送到“const uint8_t *”类型的参数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18073564/