70 votes

Comment copier std :: string dans std :: vector<char> ?

Duplicata possible : Conversion de std::string en std::vector<char>

J'ai essayé:

 std::string str = "hello";
std::vector<char> data;
std::copy(str.c_str(), str.c_str()+str.length(), data);

mais ça ne marche pas=( Alors je me demande comment copier std::string dans std::vector<char> ou std::vector<uchar> ?

153voto

R. Martinho Fernandes Points 96873

std::vector a un constructeur qui prend deux itérateurs. Tu peux utiliser ça :

 std::string str = "hello";
std::vector<char> data(str.begin(), str.end());

Si vous avez déjà un vecteur et que vous souhaitez ajouter les caractères à la fin, vous avez besoin d'un back inserter :

 std::string str = "hello";
std::vector<char> data = /* ... */;
std::copy(str.begin(), str.end(), std::back_inserter(data));

8voto

dasblinkenlight Points 264350

Vous avez besoin d'un inséreur arrière pour copier dans les vecteurs :

 std::copy(str.c_str(), str.c_str()+str.length(), back_inserter(data));

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