Comment convertir une chaîne de caractères en tableau de caractères en C++
-
Utilisez la méthode
std::basic_string::c_str
pour convertir une chaîne de caractères en tableau de caractères -
Utilisez le conteneur
std::vector
pour convertir une chaîne de caractères en tableau de caractères - Utiliser les opérations de manipulation des pointeurs pour convertir une chaîne en tableau de caractères
Cet article présente plusieurs méthodes pour convertir des données chaîne
en tableau char
.
Utilisez la méthode std::basic_string::c_str
pour convertir une chaîne de caractères en tableau de caractères
Cette version est le moyen C++ de résoudre le problème ci-dessus. Elle utilise la méthode de construction de classe string
c_str
qui retourne un pointeur vers un tableau de caractères à terminaison nulle.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl using std::string;
int main() {
string tmp_string = "This will be converted to char*";
auto c_string = tmp_string.c_str();
cout << c_string << endl;
return EXIT_SUCCESS;
}
Production:
This will be converted to char*
Si vous avez l’intention de modifier les données stockées sur le pointeur renvoyé par la méthode c_str()
, vous devez d’abord copier la plage à un emplacement différent avec la fonction memmove
et ensuite opérer sur la chaîne de caractères comme suit:
#include <cstring>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl using std::string;
int main() {
string tmp_string = "This will be converted to char*";
char *c_string_copy = new char[tmp_string.length() + 1];
memmove(c_string_copy, tmp_string.c_str(), tmp_string.length());
/* do operations on c_string_copy here */
cout << c_string_copy;
delete[] c_string_copy;
return EXIT_SUCCESS;
}
Notez que vous pouvez copier les données de la c_string
en utilisant diverses fonctions comme memcpy
, memccpy
, mempcpy
, strcpy
ou strncpy
, mais n’oubliez pas de lire les pages du manuel et d’examiner attentivement les cas/bugs de bordure.
Utilisez le conteneur std::vector
pour convertir une chaîne de caractères en tableau de caractères
Un autre moyen est de stocker les caractères d’une chaîne
dans un conteneur vectoriel, puis d’utiliser ses puissantes méthodes intégrées pour manipuler les données en toute sécurité.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
string tmp_string = "This will be converted to char*\n";
vector<char> vec_str(tmp_string.begin(), tmp_string.end());
std::copy(vec_str.begin(), vec_str.end(),
std::ostream_iterator<char>(cout, ""));
return EXIT_SUCCESS;
}
Utiliser les opérations de manipulation des pointeurs pour convertir une chaîne en tableau de caractères
Dans cette version, nous définissons un pointeur char
nommé tmp_ptr
et nous lui attribuons l’adresse du premier caractère dans tmp_string
.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl using std::string;
int main() {
string tmp_string = "This will be converted to char*\n";
string mod_string = "I've been overwritten";
char *tmp_ptr = &tmp_string[0];
cout << tmp_ptr;
return EXIT_SUCCESS;
}
Rappelez-vous cependant que modifier les données à tmp_ptr
modifierait également la valeur de tmp_string
, ce que vous pouvez voir en exécutant l’exemple de code suivant:
#include <cstring>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl using std::string;
int main() {
string tmp_string = "This will be converted to char*\n";
string mod_string = "I've been overwritten";
char *tmp_ptr = &tmp_string[0];
memmove(tmp_ptr, mod_string.c_str(), mod_string.length());
cout << tmp_string;
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArticle connexe - C++ String
- Comparaison de chaîne et de caractère en C++
- Supprimer le dernier caractère d'une chaîne en C++
- Obtenir le dernier caractère d'une chaîne en C++
- Différences entre l'opérateur sizeof et la fonction strlen pour les chaînes en C++
- Effacer la chaîne en C++
- Imprimer toutes les permutations de la chaîne en C++
Article connexe - C++ Char
- Compter les occurrences d'un caractère dans String C++
- Obtenir la valeur ASCII de Char en C++
- Comment convertir ASCII en caractères en C++
- Comment convertir Int en Char Array en C++
- Comment convertir un tableau de caractères en chaîne de caractères en C++
- Comment convertir un tableau de caractères en Int en C++