如何将std :: string转换为NSString?看看最后一张图片

杰克波罗

如何将std :: string转换为NSString?,为什么结果是乱码?我使用lldb命令po,在控制台上,红色箭头,_data显示正确的字符串?为什么?

 std::string resultString = getResult();
 NSString *str= [NSString stringWithCString:resultString.c_str() encoding:NSUTF8StringEncoding];

但str出现乱码,例如 在此处输入图片说明

在此处输入图片说明

为什么str的值= nil

在此处输入图片说明

在此处输入图片说明

甘榜

可能是字符串编码问题。我对此输入字符串做了很少的测试,并发现了一些结果。

在这里,我使用了"\x18\xa4\tp\x01"您在日志中显示的复杂字符串从结果中,我得出结论,NSUTF8StringEncoding编码字符串不适用于上述字符串。

这是代码:

+ (void) stringTest {

    std::string *resultString = new std::string("\x18\xa4\tp\x01");

    NSString *str= [NSString stringWithCString:resultString->c_str() encoding:NSUTF8StringEncoding];
    NSString *str2= [NSString stringWithCString:resultString->c_str() encoding:NSASCIIStringEncoding];
    NSString *str3= [NSString stringWithCString:resultString->c_str() encoding:[NSString defaultCStringEncoding]];

    NSLog(@"str :%@",str);
    NSLog(@"str2 :%@",str2);
    NSLog(@"str3 :%@",str3);
}

并为日志提供参考图像:

在此处输入图片说明

在这里,您可以看到NSUTF8StringEncoding返回nil字符串和其他编码都可以得到结果。我不确定哪种编码方案对您的字符串有效。如果我们知道resultString字符串的编码方案,那么我们可以在这里获得更准确的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章