Maison > développement back-end > C++ > Comment convertir un `std::string` en `char*` ou `char[]` en C ?

Comment convertir un `std::string` en `char*` ou `char[]` en C ?

Patricia Arquette
Libérer: 2024-11-30 15:39:09
original
143 Les gens l'ont consulté

How to Convert a `std::string` to a `char*` or `char[]` in C  ?

Conversion de std::string en char* ou char[]

En C , on peut rencontrer le besoin de convertir un std:: chaîne, qui contient une séquence de caractères, dans un tableau de caractères terminé par un caractère nul représenté par char* ou char[]. Cependant, une conversion directe utilisant l'opérateur d'affectation entraîne une erreur.

Pour réaliser cette conversion, plusieurs méthodes sont disponibles :

1. Méthode c_str() :

La méthode c_str() de std::string renvoie un pointeur vers la chaîne de style C sous-jacente, qui se termine par un caractère nul. Ce pointeur peut être directement affecté à une variable char*.

std::string str = "string";
const char *cstr = str.c_str();
Copier après la connexion

2. Méthode data() :

La méthode data() de std::string renvoie également un pointeur vers la chaîne de style C sous-jacente, mais elle n'est pas const. Ce pointeur peut être attribué à une variable char* sans le qualificatif const.

std::string str = "string";
char *cstr = str.data();
Copier après la connexion

Autres options :

  • Copie dans un std : :vecteur:

On peut créer un std::vecteur de caractères et copier les caractères du std::string dedans. La méthode data() du vecteur peut ensuite être utilisée pour obtenir un pointeur char*.

  • Allocation manuelle de la mémoire :

On peut manuellement allouez un tableau de caractères à l'aide de l'opérateur new, copiez les caractères de std::string dans le tableau et utilisez le tableau comme pointeur char*. Cette approche doit être utilisée avec prudence en raison de problèmes de gestion manuelle de la mémoire.

En résumé, les méthodes c_str() et data() de std::string fournissent des moyens pratiques pour convertir un std::string en char* ou type de données char[]. D'autres options, telles que la copie dans un std::vector ou l'allocation manuelle de mémoire, peuvent être utilisées dans des situations spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal