将 NSString 转换为 C 字符串时出错
Error converting NSString to C-String
我正在尝试使用以下调用将NSString
转换为 C 字符串":
NSString* path = ...
const char* str = [path cStringUsingEncoding: NSUTF16StringEncoding];
path
包含文件路径。但是,我得到的str只是"/"。当我改用此调用时:
const char* str = [path UTF8String];
返回的str
很好,即我得到所需的路径作为 c 字符串。但是,我需要确保转换在所有情况下都有效,无论路径中使用的类型编码如何,即我想处理 unicode 字符。为此,我需要使用初始调用。
我犯了什么错误?
这是因为您选择的编码。 UTF-16 将返回 16 位字符,而您期望 8 位字符(即 UTF-8)。
因此,如果路径以 /
开头,则将返回为 0x2F00
(假设小端编码),并且00
序列将看起来是字符串的结尾。
你应该尝试使用 UTF8 编码,你得到的这个"\"将是 NSString 的第一个......在 c 中,每个字符占用 1 个字节(8 位),但 UTF16 使字符长度为 2 个字节。所以发生了错误
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么 stl 字符串C++函数有时出错有时会出错?
- 读取字符串C++的字符时出错
- 读取字符串字符时出错 - 对于数组中的字符串值
- 通过字符串::插入插入字符时出错
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- 读取字符串字符时出错
- 计算字符串中字符的出现次数时出错
- 在字符串中反转元音时出错
- C++ 使用 Strtok 读取字符串字符时出错
- 在 c++ 中调用将字符串作为参数传递的函数时出错
- 使用 C++Builder 项目读取字符串中的文件时出错
- 在字符串流中使用来自 github 的代码时出错
- C ++ ifstream 无法读取字符串,并且在读取字符时出错
- 需要帮助以了解字符串出错的地方
- cin和字符串出错