2014-05-02 5 views
27

पर कनवर्ट करने के लिए कैसे करें Vec<char> को स्ट्रिंग फॉर्म में कनवर्ट करने के लिए कैसे करें ताकि मैं इसे प्रिंट कर सकूं?Vec <char> को एक स्ट्रिंग

+0

(http://stackoverflow.com/questions/29158406/creating-a-string-from-vecchar) –

उत्तर

2

यह उत्तर सही था, लेकिन अब आउट-ऑफ-तिथि है (from_chars मौजूद नहीं है, और std::strbuf::StrBuf अब सिर्फ String है), इसलिए downvote की कोई जरूरत नहीं है। नीचे व्लादिमीर Matveev के जवाब (और upvote) पर एक नज़र डालें।


std::str::from_chars(char_vector.as_slice()); // creates a ~str 

char_vector.iter().map(|c| *c).collect::<std::strbuf::StrBuf>(); 

डॉक्स: std::str::from_chars

(उत्तरार्द्ध, एक ~str को भी इकट्ठा करने के लिए इस्तेमाल किया जा सकता सिर्फ StrBuf प्रकार संकेत बदलकर।)

+2

[वीइसी से एक स्ट्रिंग बनाना] के संभावित डुप्लिकेट जब कोई जवाब अद्यतित नहीं होता है तो उसे वोट करने के लिए तार्किक है। अपना उत्तर अपडेट करें वोट बंद कर देगा। – Stargateur

+3

मेरा उत्तर अपडेट करने से व्लादिमीर के क्रेडिट/वोट लेंगे। – huon

+0

आप जंग के लागू संस्करणों को इंगित करने के साथ उत्तर अद्यतन कर सकते हैं। – courteouselk

57

जंग 1.0

बहुत ही सरल के लिए अपडेट किया गया, बस पुनरावर्तक पर collect() का उपयोग करें:

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

मूल सदिश भस्म हो जाएगा। आप इसे रखने के लिए की जरूरत है, v.iter().cloned() का उपयोग करें:

let s: String = v.iter().cloned().collect(); 

कोई और सीधा रास्ता है, क्योंकि char एक 32-बिट यूनिकोड अदिश मूल्य है, और जंग में तार बाइट्स के दृश्यों कर रहे हैं (u8) UTF- में पाठ का प्रतिनिधित्व 8 एन्कोडिंग। वे char एस के अनुक्रमों पर सीधे मैप नहीं करते हैं। जब लिखा

3

यहाँ एक अधिक पठनीय संस्करण है कि वेक्टर की खपत:

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(); 
} 

ध्यान दें कि collectFromIterator::from_iter के लिए एक कॉल के साथ लागू किया जाता है:

fn collect<B: FromIterator<Self::Item>>(self) -> B where Self: Sized { 
    FromIterator::from_iter(self) 
} 
संबंधित मुद्दे