Тип CString
Тип CString представляет собой владеющую строку,
завершающуюся нулевым байтом. Он используется для
безопасного создания и передачи строк в C-функции через
FFI. В отличие от CStr, который является
заимствованным срезом, CString владеет своей
памятью. Параметром конструктор принимает срез байтов
или строку, которая не должна содержать внутренних
нулевых байтов.
Синтаксис
use std::ffi::CString;
CString::new(s)
Пример
Давайте создадим CString из строки
"abcde" и получим длину его содержимого:
use std::ffi::CString;
fn main()
{
let cs = CString::new("abcde").unwrap();
println!("{}", cs.as_bytes().len());
}
Результат выполнения кода:
5
Пример
Давайте получим указатель на C-строку с помощью метода
as_ptr и проверим, что последний байт равен нулю:
use std::ffi::CString;
fn main()
{
let cs = CString::new("12345").unwrap();
let ptr = cs.as_ptr();
unsafe {
println!("{}", *ptr.add(5));
}
}
Результат выполнения кода:
0