"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo convertir cadenas en dobles en C++: una guía sencilla usando `std::istringstream` y `std::stod`

Cómo convertir cadenas en dobles en C++: una guía sencilla usando `std::istringstream` y `std::stod`

Publicado el 2024-11-16
Navegar:531

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

Convertir cadenas en dobles en C

En C, la conversión de una cadena en un doble se puede lograr usando las funciones std::istringstream y 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;
}

Así es como funciona esta función:

  1. Crea un objeto std::istringstream iss a partir de la cadena de entrada s.
  2. Utiliza el operador >> para extraer un valor doble de iss.
  3. Si la extracción es exitosa, devuelve el valor doble.
  4. Si la extracción falla (por ejemplo, la cadena es no numérico), devuelve 0.

Tenga en cuenta que esta función no puede distinguir completamente todas las representaciones de cadena permitidas de cero de las cadenas no numéricas. Por ejemplo, considera todas las siguientes cadenas como cero:

"0"
"0."
"0.0"

A continuación se muestran algunos casos de prueba para demostrar el uso de la función 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;
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3