Estoy tratando de aprender C ++ desde ayer y estoy usando este documento: http://www.cplusplus.com/files/tutorial.pdf (página 32). Encontré un código en el documento y lo ejecuté. Intenté ingresar Rs 5.5 para el precio y un número entero para la cantidad y la salida fue 0. Intenté ingresar 5.5 y 6 y la salida fue correcta.
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
string mystr;
float price = 0;
int quantity = 0;
cout << "Enter price: ";
getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: ";
getline (cin,mystr);
stringstream(mystr) >> quantity;
cout << "Total price: " << price*quantity << endl;
return 0;
}
Pregunta: ¿Qué hace exactamente el comando mystring? Citando del documento:
"En este ejemplo, adquirimos valores numéricos de la entrada estándar de forma indirecta. En lugar de extraer valores numéricos directamente de la entrada estándar, obtenemos líneas de la entrada estándar (cin) en un objeto de cadena (mystr) y luego extraemos el número entero valores de esta cadena en una variable de tipo int (cantidad) ".
Mi impresión fue que la función tomará la parte integral de una cadena y la usará como entrada.
(No sé exactamente cómo hacer una pregunta aquí. También soy nuevo en la programación) Gracias.
stringstream
funciona. Es extraño, probablemente incluso malo =) Pero muestra que puedes tratar la cadena como una secuencia.
stringstream
, definitivamente es un ejemplo incorrecto. E incluso si lo es, debería escribirse de manera diferente.
stringstream
usado de esa manera. Por lo general, cargo la línea, la convierto y luego la extraigo por partes, sin embargo, esto obviamente tiene poca ventaja aquí porque yacin
es un flujo de entrada ... Asícin >> price >> quantity;
que sería mucho más simple. Esa sería una buena razón para NO usar los tutoriales de cplusplus.com.