如何将Vec <char>转换为字符串

use*_*561 53 string rust

如何转换Vec<char>为字符串形式,以便我可以打印它?

Vla*_*eev 97

使用collect()上的迭代器:

let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);
Run Code Online (Sandbox Code Playgroud)

原始矢量将被消耗.如果您需要保留它,请使用v.iter():

let s: String = v.iter().collect();
Run Code Online (Sandbox Code Playgroud)

没有更直接的方法,因为char是一个32位的Unicode标值,并在防锈字符串是字节序列(u8),表示在UTF-8编码的文本.它们不直接映射到chars的序列.

  • 如果你不想使用 `s` 而只是暂时需要这个字符串,你可以这样做:`v.iter().collect::&lt;String&gt;()` (3认同)

mal*_*rbo 19

这是一个使用向量的更易读的版本:

use std::iter::FromIterator;

fn main() {
    let v = vec!['a', 'b', 'c', 'd'];
    let s = String::from_iter(v);
    // vs
    let s: String = v.into_iter().collect();
}
Run Code Online (Sandbox Code Playgroud)

请注意,collect通过调用以下方式实现FromIterator::from_iter:

fn collect<B: FromIterator<Self::Item>>(self) -> B
where
    Self: Sized,
{
    FromIterator::from_iter(self)
}
Run Code Online (Sandbox Code Playgroud)