РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1205 of 1245 menu

Функция new класса CString

Функция new класса CString создает новую C-строку из переданного среза байтов. Она принимает срез байтов &[u8] и возвращает результат типа Result<CString, NulError>. Если в переданных данных встречается нулевой байт, функция возвращает ошибку NulError, так как C-строки не могут содержать внутренние нулевые байты. Функция автоматически добавляет завершающий нулевой байт в конец строки.

Синтаксис

CString::new(bytes)

Пример

Давайте создадим C-строку из байтов b"abcde":

use std::ffi::CString; fn main() { let res = CString::new(b"abcde".to_vec()); println!("{:?}", res); }

Результат выполнения кода:

Ok("abcde")

Пример

Давайте попробуем создать C-строку из байтов, содержащих нулевой байт:

use std::ffi::CString; fn main() { let res = CString::new(b"abc\0de".to_vec()); println!("{:?}", res); }

Результат выполнения кода:

Err(NulError(3, [97, 98, 99, 0, 100, 101]))

Пример

Давайте создадим C-строку и получим указатель на нее:

use std::ffi::CString; fn main() { let c_string = CString::new("12345").unwrap(); let ptr = c_string.as_ptr(); println!("{:?}", ptr); }

Результат выполнения кода:

0x... (адрес в памяти)

Смотрите также

  • класс CString,
    который представляет C-строку в Rust
  • метод as_ptr,
    который возвращает указатель на C-строку
  • метод into_raw,
    который передает владение C-строкой и возвращает указатель
  • метод from_raw,
    который создает C-строку из сырого указателя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить