43 votes

Copie d'un tableau de caractères non terminés par des zéros vers std::string

Si le tableau était Terminaison nulle ce serait assez simple :

unsigned char u_array[4] = { 'a', 's', 'd', '\0' };
std::string str = reinterpret_cast<char*>(u_array);
std::cout << "-> " << str << std::endl;

Cependant, je me demande quelle est la manière la plus appropriée de copier une non terminées par un zéro tableau de caractères non signés, comme le suivant :

unsigned char u_array[4] = { 'a', 's', 'd', 'f' };

en un std::string .

Existe-t-il un moyen de le faire sans itérer sur le fichier tableau de caractères non signés ?

Merci à tous.

0voto

Ew, pourquoi le casting ?

 std::string str(u_array, u_array + sizeof(u_array));

C'est fait.

0voto

Ben Hekster Points 11

Même si la question était de savoir comment "copier un fichier non terminé par des zéros". unsigned char dans un tableau [...] de std::string "Je note que dans l'exemple donné, cette chaîne n'est utilisée qu'en tant qu'entrée de la fonction std::cout .

Dans ce cas, vous pouvez bien sûr éviter la chaîne de caractères et faire simplement

std::cout.write(u_array, sizeof u_array);
std::cout << std::endl;

ce qui, je pense, pourrait résoudre le problème que le PO avait en essayant à résoudre.

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