Maison > développement back-end > C++ > Comment gérer les échecs de conversion de chaîne en entier en C ?

Comment gérer les échecs de conversion de chaîne en entier en C ?

DDD
Libérer: 2024-11-04 21:32:02
original
570 Les gens l'ont consulté

How to Handle String to Integer Conversion Failures in C  ?

Conversion de chaînes en entiers avec gestion des échecs en C

Lorsque l'on traite des chaînes en C, il est souvent nécessaire de les convertir en représentations numériques comme les entiers. Une approche courante consiste à utiliser la fonction std::stoi de la bibliothèque standard C. Cependant, cette fonction n'a pas la capacité de signaler les échecs de conversion. Pour un code plus robuste, nous explorons comment gérer les conversions ayant échoué à l'aide de boost::lexical_cast et d'approches alternatives.

boost::lexical_cast

La fonction boost::lexical_cast fournit un moyen robuste de convertir des chaînes en entiers. Il lève une exception si la conversion ne peut pas être effectuée. L'extrait de code suivant démontre son utilisation :

<code class="cpp">#include <boost/lexical_cast.hpp>

try {
    int i = boost::lexical_cast<int>(s);
    // ...
} catch(...) {
    // ...
}</code>
Copier après la connexion

Approches sans boost

Si la bibliothèque boost n'est pas disponible, des méthodes alternatives peuvent être utilisées :

  1. Utilisation de std::stringstream : En lisant la chaîne dans un objet std::stringstream, vous pouvez échouer la conversion si la chaîne ne peut pas être lue comme un entier ou s'il y a des non- entrée d'espaces blancs.
  2. Création d'une fonction lexical_cast personnalisée : Cette fonction peut être implémentée en encapsulant l'approche std::stringstream dans un modèle function.
  3. Utilisation de versions sans lancer de l'approche std::stringstream : Si vous souhaitez éviter de lancer des exceptions, vous pouvez créer une fonction lexical_cast qui renvoie un booléen indiquant le succès ou l'échec de la conversion.

En résumé, l'utilisation de boost::lexical_cast, std::stringstream ou d'une fonction lexical_cast personnalisée permet des conversions robustes de chaînes en entiers avec des capacités de gestion des échecs. Le bon choix dépend de la disponibilité des bibliothèques et du comportement d'exception requis.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal