131 votes

Comment construire un std :: string à partir d'un std :: vector <char> ?

À part (l’évidence) de construire une chaîne de style C d’abord, puis de l'utiliser pour créer un std :: string, existe-t-il un moyen plus rapide / alternatif / "meilleur" pour initialiser une chaîne à partir d'un vecteur de caractères?

222voto

Greg Points 1740

Eh bien, le meilleur moyen consiste à utiliser le constructeur suivant:

 template<class InputIterator> string (InputIterator begin, InputIterator end);
 

ce qui conduirait à quelque chose comme:

 std::vector<char> v;
std::string str(v.begin(),v.end());
 

J'espère que ça aide.

47voto

LiMuBei Points 669

Je pense que vous pouvez juste faire

 std::string s( MyVector.begin(), MyVector.end() );
 

où MyVector est votre std :: vector.

42voto

Ștefan Points 368

Avec C ++11, vous pouvez faire std::string(v.data()) ou, si votre vecteur ne contient pas '\0' à la fin, std::string(v.data(), v.size()) .

12voto

Martin Stone Points 5779
 std::string s(v.begin(), v.end());
 

Où v est à peu près tout ce qui est itérable. (Plus précisément, begin () et end () doivent renvoyer InputIterators.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X