当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust CStr.from_ptr用法及代码示例


本文简要介绍rust语言中 std::ffi::CStr.from_ptr 的用法。

用法

pub unsafe fn from_ptr<'a>(ptr: *const c_char) -> &'a CStr

使用安全的 C 字符串包装器包装原始 C 字符串。

此函数将包装提供的ptrCStrwrapper,它允许检查和互操作非拥有的 C 字符串。原始 C 字符串的总大小必须小于isize::MAX 字节由于调用slice::from_raw_parts函数。由于多种原因,此方法不安全:

  • 不保证 ptr 的有效性。
  • 返回的生命周期不保证是 ptr 的实际生命周期。
  • 无法保证 ptr 指向的内存在字符串末尾包含有效的 nul 终止符字节。
  • 不保证ptr 指向的内存在CStr 被销毁之前不会改变。

注意:此操作旨在进行 0 成本转换,但目前通过 up-front 计算字符串长度来实现。不能保证总是如此。

例子

use std::ffi::CStr;
use std::os::raw::c_char;

extern "C" {
    fn my_string() -> *const c_char;
}

unsafe {
    let slice = CStr::from_ptr(my_string());
    println!("string returned: {}", slice.to_str().unwrap());
}

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::ffi::CStr.from_ptr。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。