连接两个 rust ffi::CString 的最佳方法是什么?

问题描述 投票:0回答:1

我无法找到 ffi::CString 连接的方法,所以我执行了以下操作:

// c_str1: CString
// c_str2: CString
...
let str1 = c_str1.to_str().unwrap();
let str2 = c_str2.to_str().unwrap();
let concatenated = str1.to_owned() + str2;
...

但我的解决方案看起来不像是惯用的解决方案。您能否建议是否有更好的串联解决方案?

string rust
1个回答
0
投票

CString
表示字节字符串,而不是像
str
这样的 Unicode 字符串,因此实现 generic
CString
连接的更正确方法是:

use std::ffi::{CString, CStr};

fn strcat(start: CString, end: &CStr) -> CString {
    let mut concatenation = start.into_bytes();
    concatenation.extend_from_slice(end.to_bytes_with_nul());
    CString::from_vec_with_nul(concatenation).unwrap()
}
© www.soinside.com 2019 - 2024. All rights reserved.