El problema es que C++ es un lenguaje estáticamente tipado, lo que significa que si algo se declara como string
, es una cadena, y si algo se declara como double
, es un doble A diferencia de otros lenguajes como JavaScript o PHP, no hay forma de convertir automáticamente de una cadena a un valor numérico porque la conversión podría no estar bien definida. Por ejemplo, si intenta convertir la cadena "Hi there!"
a double
, no hay una conversión significativa. Claro, usted podría acaba de establecer la double
-,0 o NaN, pero esto casi seguro que enmascarar el hecho de que hay un problema en el código.
Para solucionar este problema, no amortiguar el contenido del archivo en una cadena. En cambio, sólo leen directamente en el double
:
double lol;
openfile >> lol;
Esto lee el valor directamente como un número real, y si se produce un error hará que el método de la corriente .fail()
para volver realidad. Por ejemplo:
double lol;
openfile >> lol;
if (openfile.fail()) {
cout << "Couldn't read a double from the file." << endl;
}
posible duplicado de [cadena en notación científica C++ a doble conversión] (http://stackoverflow.com/questions/1710447/string-in-scientific-notation- c-to-double-conversion) –
Esto es básicamente un duplicado con la única diferencia de que ni siquiera necesita pasar por el escenario de cadena, ya que puede leer directamente en el doble. –
Cuando convierte un 'char' en' int', obtiene el código del personaje, no su "valor" percibido. En otras palabras, 'int x = '0';' establece 'x' a' 48' (si está en una configuración regional compatible con ASCII), no '0'. –