本文简要介绍rust语言中 std::ffi::CStr.from_ptr
的用法。
用法
pub unsafe fn from_ptr<'a>(ptr: *const c_char) -> &'a CStr
使用安全的 C 字符串包装器包装原始 C 字符串。
此函数将包装提供的ptr
与CStr
wrapper,它允许检查和互操作非拥有的 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 CStr.from_bytes_with_nul用法及代码示例
- Rust CStr.from_bytes_with_nul_unchecked用法及代码示例
- Rust CStr.into_c_string用法及代码示例
- Rust CStr.to_bytes用法及代码示例
- Rust CStr.as_ptr用法及代码示例
- Rust CStr.to_str用法及代码示例
- Rust CStr.to_string_lossy用法及代码示例
- Rust CStr.to_bytes_with_nul用法及代码示例
- Rust CString.into_bytes用法及代码示例
- Rust CString.from_raw用法及代码示例
- Rust CString.into_boxed_c_str用法及代码示例
- Rust CStr用法及代码示例
- Rust CString.into_raw用法及代码示例
- Rust CString.as_c_str用法及代码示例
- Rust CString.from_vec_unchecked用法及代码示例
- Rust CString.from_vec_with_nul_unchecked用法及代码示例
- Rust CString.from_vec_with_nul用法及代码示例
- Rust CString.as_bytes用法及代码示例
- Rust CString用法及代码示例
- Rust CString.into_bytes_with_nul用法及代码示例
- Rust CString.as_bytes_with_nul用法及代码示例
- Rust CString.new用法及代码示例
- Rust CString.into_string用法及代码示例
- Rust Cursor.new用法及代码示例
- Rust Condvar.notify_all用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::ffi::CStr.from_ptr。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。