首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将UnsafePointer<CUnsignedChar>转换为字符串?

如何将UnsafePointer<CUnsignedChar>转换为字符串?
EN

Stack Overflow用户
提问于 2014-09-15 14:32:33
回答 2查看 3.1K关注 0票数 2

我尝试过这样的方法:

代码语言:javascript
运行
复制
String.stringWithCString(cString: UnsafePointer<CChar>, encoding: NSStringEncoding)

但不幸的是,它只适用于UnsafePointer<CChar>。我不知道如何将UnsafePointer<CUnsignedChar>转换为UnsafePointer<CChar>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-15 14:43:06

struct UnsafePointer<T>有一个构造函数,它将不同类型的不安全指针作为参数:

代码语言:javascript
运行
复制
/// Convert from a UnsafePointer of a different type.
///
/// This is a fundamentally unsafe conversion.
init<U>(_ from: UnsafePointer<U>)

因此,您可以从ptr : UnsafePointer<CUnsignedChar>中创建一个字符串

代码语言:javascript
运行
复制
let str = String.stringWithCString(UnsafePointer(ptr), encoding: someEncoding)

或者,在UTF-8编码的情况下,更简单地使用

代码语言:javascript
运行
复制
let str = String.fromCString(UnsafePointer(ptr))

注意,泛型类型<CChar>是从这里的上下文自动推断出来的,即最后一行相当于

代码语言:javascript
运行
复制
let str = String.fromCString(UnsafePointer<CChar>(ptr))
票数 2
EN

Stack Overflow用户

发布于 2021-06-23 08:18:46

自Swift 3.0以来

代码语言:javascript
运行
复制
let str = String(cString: UnsafePointer<CChar>(ptr))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25850477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档