如何使用Rust将CString转换为String?

sshcrbum  于 2023-11-19  发布在  其他
关注(0)|答案(2)|浏览(215)

我有一个CString,我正在从磁盘上阅读。我用CStr::from_bytes_until_nul创建了它。但我的最终目标是拥有一个String,而不是一个CString。我试图将我的CString存储到一个需要String的结构中。有没有一个方法可以将CString转换为String?
一个字符串是拥有和似乎,

  • 保证没有内部\0
  • 保证有一个终端\0

一个String也拥有。它似乎,

  • 保证内容是utf8。

为什么没有一个从CString到String的.try_into(),它把终端\0拉出来并 Package str::from_utf8(mycstring)

k5ifujac

k5ifujac1#

CString本身有一个方法into_string,它可以完成你想做的事情。

uyhoqukh

uyhoqukh2#

您可以使用to_str()CString转换为String,当成功时,它会给您一个&str(例如,您的CString只包含有效的UTF-8字符),然后可以通过调用to_string()将其转换为String
下面是一个简短的例子:

let cstring = CString::new("A string.").unwrap();
let string = cstring.to_str().unwrap().to_string();

字符串
Rust Explorer的链接
关于你的第二个问题,我认为没有理由不进行try_into转换,所以我的猜测是,到目前为止,它还没有实现。还有一个Open issue on Github请求的正是这个。

相关问题