CStr::from_bytes_until_nul
创建了它。不过,我的最终目标是拥有 String
,而不是 CString
。我正在尝试将我的 CString
存储到需要 String
的结构中。有没有从 CString 转换为 String 的方法?
一个 CString 被拥有并且似乎是,
\0
\0
A
String
也拥有。看来,
为什么没有从 CString 到 String 的
.try_into()
来拉出终端 \0
并包裹 str::from_utf8(mycstring)
?
CString
本身有方法
into_string,它正是你想做的。
CString
将 String
转换为 to_str()
,成功时会为您提供 &str
(例如,您的 CString
仅包含有效的 UTF-8 字符) ,然后可以通过调用 String
将其转换为 to_string()
。
这是一个简短的示例:
let cstring = CString::new("A string.").unwrap();
let string = cstring.to_str().unwrap().to_string();
以及 Rust Explorer 的链接。
关于你的第二个问题,我认为没有理由不应该进行
try_into
转换,所以我的猜测是它到目前为止还没有实施。 Github 上还有一个 Open issues 正是要求这样做。