Maison > développement back-end > C++ > le corps du texte

Comment convertir en toute sécurité entre stringstream, string et char* en C ?

Susan Sarandon
Libérer: 2024-11-14 17:31:02
original
197 Les gens l'ont consulté

How to Safely Convert Between stringstream, string, and char* in C  ?

Navigation des conversions stringstream, string et char*

Lorsqu'ils travaillent avec des chaînes en C, les programmeurs rencontrent souvent une confusion lors de la conversion entre stringstream, string , et char*. Cet article explore les subtilités de ces conversions, démêle les idées fausses et propose des solutions pratiques.

Comprendre la durée de vie de stringstream.str().c_str()

Le point crucial Le problème réside dans la compréhension de la durée de vie de la chaîne renvoyée par stringstream.str().c_str(). Cet objet chaîne temporaire est détruit à la fin de l'expression, rendant invalides tous les pointeurs obtenus (comme const char* cstr2).

Résoudre la confusion

Pour résolvez ce problème, évitez d'attribuer stringstream.str().c_str() directement à un const char*. Au lieu de cela, créez une copie de la chaîne temporaire dans un autre objet chaîne, puis obtenez la chaîne C à partir de celui-ci :

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

Vous pouvez également limiter la durée de vie de la chaîne temporaire en l'utilisant dans l'expression :

use_c_str( stringstream.str().c_str() );
Copier après la connexion

Pour plus d'efficacité et de clarté, liez le temporaire à une référence const :

{
  const std::string& tmp = stringstream.str();   
  const char* cstr = tmp.c_str();
}
Copier après la connexion

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