gpt4 book ai didi

c++ - 将 std::string 转义为 NSString*

转载 作者:行者123 更新时间:2023-11-30 02:48:14 29 4
gpt4 key购买 nike

我有:

std::string string = "\xae\xab\xe30"(在 "\xe30"序列之后继续)。

在为 iOS 设备上的音乐文件创建指纹后,此数据来自 echoprint-ios 库。此字符串包含 zlib-压缩的 base64 序列。

UPD:有时这个字符串可以包含像 .$\x18\x8a\x03 这样的数据,我也需要你的回答。

我需要:

将此字符串解析为NSString* 并将其传递给NSURL 以对echoprint 服务进行查询。

出了什么问题:

我无法通过很多方法从这个 std::string 解析 NSString* 对象:

  1. 通过 [NSString stringWithCString:string.c_str() encoding:NSUTF8StringEncoding] 创建 NSString 对象 - 它在 UTF8 上返回 nil,就像我需要的一样,但是使用 UTF16/32 编码的不正确数据(但这是绝对错误的,它应该是 ascii/utf8 字符串 imo),或者使用 NSAsciiStringEncoding 将其放置在具有不可读符号的 NSString 对象数据中(例如来自系统符号表)。

  2. 获取输入标准 c 字符串的任何方法(因此它将是 string.c_str())

简历:

我需要帮助将这个字符串转换为 NSString 对象。

最佳答案

std::string string = "\xae\xab\xe30";
NSString * cocoaString = [NSString stringWithFormat:@"%s",string.c_str()];

NSString * cocoaString = [NSString stringWithCString:string.c_str() encoding:NSUTF8StringEncoding];

请记住,在 C++ 中,您可以在字符串中保留空字符...但这在 NSString 中不会被视为有效,如果您需要保留任意数据,NSData 对象会更好。

数据示例:

NSData * d = [NSData dataWithBytes:(void *) string.c_str() length:string.length()];

这将封装任意二进制数据而不考虑格式。

关于c++ - 将 std::string 转义为 NSString*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173184/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com