"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment convertir des chaînes en doubles en C++ : un guide simple utilisant `std::istringstream` et `std::stod`

Comment convertir des chaînes en doubles en C++ : un guide simple utilisant `std::istringstream` et `std::stod`

Publié le 2024-11-16
Parcourir:484

How to Convert Strings to Doubles in C  : A Simple Guide Using `std::istringstream` and `std::stod`

Conversion de chaînes en doubles en C

En C, la conversion d'une chaîne en double peut être réalisée à l'aide des fonctions std::istringstream et std::stod.

#include 

double string_to_double(const std::string& s) {
  std::istringstream iss(s);
  double x;
  if (!(iss >> x)) {
    return 0;  // Return 0 for non-numerical strings
  }
  return x;
}

Voici comment fonctionne cette fonction :

  1. Créez un objet std::istringstream iss à partir de la chaîne d'entrée s.
  2. Utilisez l'opérateur >> pour extraire un valeur double de iss.
  3. Si l'extraction réussit, renvoie la valeur double.
  4. Si l'extraction échoue (par exemple, la chaîne n'est pas numérique), renvoie 0.

Notez que cette fonction ne peut pas distinguer complètement toutes les représentations de chaîne autorisées de zéro des chaînes non numériques. Par exemple, il considère toutes les chaînes suivantes comme nulles :

"0"
"0."
"0.0"

Voici quelques cas de test pour démontrer l'utilisation de la fonction string_to_double :

#include 

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"));

  assert(0 == string_to_double("0"));
  assert(0 == string_to_double("0."));
  assert(0 == string_to_double("0.0"));
  assert(0 == string_to_double("foobar"));

  return 0;
}
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3