Comment faire pour convertir un char tableau à une chaîne de caractères?
De la conversion d'un C++ string
à un char tableau est assez straightorward à l'aide de la c_str
fonction de la chaîne et ensuite de faire strcpy
. Cependant, la façon de faire le contraire?
J'ai un char tableau, par exemple: char arr[ ] = "This is a test";
d'être reconverti à:
string str = "This is a test
.
Vous devez vous connecter pour publier un commentaire.
La
string
classe a un constructeur qui prend un NUL C-string:killer
méthode, que je cherchais.const char*
, de sorte que vous pouvez passer un littéral de chaîne ou un tableau de char (qui se décompose pour que)."hello world"
est tableaux. Si vous utilisezsizeof("hello world")
il va vous donner la taille du tableau (12), plutôt que de la taille d'un pointeur (4 ou 8).char arr[]
à une chaîne, Mystique a donné une excellente façon de le faire.std::string composite = "Have a " + std::string(arr) + " day"
string
constructeur ne fonctionnera pas avec, par exemple, un argument passé chaîne déclarée commeunsigned char * buffer
, quelque chose de très commun dans le flux d'octets de la manipulation des bibliothèques.std::string str(buffer, buffer+size);
, mais il est probablement préférable de s'en tenir à unstd::vector<unsigned char>
dans ce cas.str
est pas un convertir-fonction ici. C'est le nom de la variable de chaîne. Vous pouvez utiliser n'importe quel autre nom de la variable (par exemplestring foo(arr);
). La conversion est effectuée par le constructeur de std::string qui est appelé implicitement.Une autre solution pourrait ressembler à ceci,
qui évite d'utiliser une variable supplémentaire.
cout << "test:" + std::string(arr);
string aString(someChar);
?Il y a un petit problème de raté dans le haut-voté réponses. À savoir, tableau de caractères peut contenir de 0. Si nous utilisons constructeur avec un seul paramètre comme indiqué ci-dessus, nous allons perdre des données. La solution possible est:
De sortie est:
std::string
comme un conteneur pour les données binaires et ne peut pas être certain que le tableau ne contient pas de '\0'.OUT: