Ios 发送';常量字符*';至类型为'的参数;const uint8_t*';错误
我正在编写一个iOS应用程序,其中我在常量文件中声明了一个字符串常量:Ios 发送';常量字符*';至类型为'的参数;const uint8_t*';错误,ios,objective-c,compiler-warnings,Ios,Objective C,Compiler Warnings,我正在编写一个iOS应用程序,其中我在常量文件中声明了一个字符串常量: NSString * const kHeader = @"name,age,gender"; 和常数 FOUNDATION_EXPORT NSString * const kHeader; 我正试图将此字符串写入ViewController类中的NSOutput流,如下所示: [outputStream写入:[kHeader UTF8String]最大长度:[kHeader length]] 这将显示编译器警告: 将“c
NSString * const kHeader = @"name,age,gender";
和常数
FOUNDATION_EXPORT NSString * const kHeader;
我正试图将此字符串写入ViewController类中的NSOutput流,如下所示:
[outputStream写入:[kHeader UTF8String]最大长度:[kHeader length]]
这将显示编译器警告:
将“const char*”发送到“const uint8_t*”类型的参数(也称为“const unsigned char*”)会在指针之间转换为具有不同符号的整数类型
这是什么意思?我如何解决这个问题?请帮忙。谷歌搜索没有产生太多有用的结果。除了有符号/无符号指针警告之外,您的代码实际上可能是错误的。
[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]];
除了有符号/无符号指针警告之外,您的代码实际上可能是错误的。
[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]];
这意味着
UTF8String
是有符号的,并且输出流需要一个无符号值。只需添加一个强制转换来消除警告。这意味着UTF8String
是有符号的,并且输出流需要一个无符号的值。只需添加一个石膏使警告静音。让我试试这个&回来。你说的很有道理。谢谢。让我试试这个,回来。你说的很有道理。非常感谢。