Convertir un C ++ string
en un tableau de caractères est assez simple en utilisant la c_str
fonction de chaîne, puis en faisant strcpy
. Mais comment faire le contraire?
J'ai un tableau de caractères comme: char arr[ ] = "This is a test";
être convertie à:
string str = "This is a test
.
const char*
, vous pouvez donc lui passer un littéral de chaîne ou un tableau de caractères (qui se désintègre)."hello world"
sont des tableaux. Si vous l'utilisez, voussizeof("hello world")
obtiendrez la taille du tableau (qui est 12), plutôt que la taille d'un pointeur (probablement 4 ou 8).string
constructeur ne fonctionnera pas avec, par exemple, une chaîne d'arguments passée déclarée commeunsigned char * buffer
, quelque chose de très courant dans les bibliothèques de gestion de flux d'octets.std::string str(buffer, buffer+size);
mais il vaut probablement mieux s'en tenir à unstd::vector<unsigned char>
dans ce cas.str
n'est pas une fonction de conversion ici. Il s'agit du nom de la variable chaîne. Vous pouvez utiliser tout autre nom de 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,
ce qui évite d'utiliser une variable supplémentaire.
la source
cout << "test:" + std::string(arr);
string aString(someChar);
?Il y a un petit problème manqué dans les réponses les plus votées. À savoir, le tableau de caractères peut contenir 0. Si nous utilisons un constructeur avec un seul paramètre comme indiqué ci-dessus, nous perdrons certaines données. La solution possible est:
La sortie est:
la source
std::string
comme conteneur pour les données binaires et ne pouvez pas être certain que le tableau ne contient pas '\ 0'.EN DEHORS:
la source