如何将
Vec<char>
转换为字符串形式以便打印输出?在迭代器上使用collect()
:
let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);
原始向量将被消耗。如果需要保留它,请使用 v.iter()
:
let s: String = v.iter().collect();
没有更直接的方法,因为char
是32位Unicode标量值,而在Rust中,字符串是以UTF-8编码的字节序列(u8
)表示文本的序列。它们不能直接映射到char
序列。
以下是一个更易读的版本,它使用了向量:
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();
}
请注意,collect
是通过调用 FromIterator::from_iter
实现的:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}
String::from_iter(&v)
。 - darque
s
,且只需要这个字符串暂时存在,您可以这样做:v.iter().collect::<String>()
- Baqir Khan::<>
被称为turbofish
。 - Srikar