本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。