Maison >développement back-end >C++ >Comment convertir en toute sécurité des chaînes en doubles en C et gérer des chaînes non numériques ?
Conversion de chaînes en doubles en C avec une gestion spéciale pour les chaînes non numériques
En C, la conversion de chaînes en doubles peut être effectuée de manière transparente en utilisant fonctions intégrées. Cependant, il devient crucial de faire la distinction entre les chaînes numériques et non numériques. Pour relever ce défi, nous présentons une solution qui renvoie 0 pour les chaînes non numériques.
Implémentation de la fonction :
Le cœur de notre solution réside dans la fonction string_to_double :
<code class="cpp">#include <sstream> double string_to_double(const std::string& s) { std::istringstream i(s); double x; if (!(i >> x)) return 0; return x; }</code>
Comment ça marche :
Test de la fonction :
Dans les cas de test fournis, nous démontrons comment la fonction interprète correctement différentes chaînes numériques et non numériques :
<code class="cpp">int main() { assert(0.5 == string_to_double("0.5")); assert(0.5 == string_to_double("0.5 ")); assert(0.5 == string_to_double(" 0.5")); assert(0.5 == string_to_double("0.5a")); // Non-numerical strings will return 0: assert(0 == string_to_double("foobar")); }</code>
Limitations :
Il est important de noter qu'en raison des exigences spécifiques de renvoi de 0 pour les chaînes non numériques, il n'est pas possible de faire la distinction entre les chaînes numériques représentant zéro et les chaînes véritablement non numériques.
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!