[SOLUCIONADO] me salta el getline

Iniciado por elkiy, 19 Febrero 2013, 22:53 PM

0 Miembros y 1 Visitante están viendo este tema.

elkiy

Hola en este programa no deja escribir el nombre porque pasa directamente al otro codigo quisiera saber porque y cual seria la solucion

Código (cpp) [Seleccionar]
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <string>
using std::getline;
using std::string;

int main()
{
int numero1;
int numero2;
double numero3;
string nombre;

cout << "Bienvenido, escriba 1 numero entero\n";
cin >> numero1;
cout << "Bien! ahora escriba un numero con decimales!\n";
cin >> numero3;
cout << "Escriba un numero entero\n";
cin >> numero2;
cout << "Escribe tu nombre y apellido!";
getline(cin, nombre);
cout << "\nBienvenido: " << nombre << endl;
cout << "OK, ingreso los numeros: " <<numero1 << " " << numero3 << " " << numero2;
cout << "hagamos unas cuentas...";
cout << numero3 << "es igual a " << numero1 << " dividido " << numero2 << endl;
numero3 = static_cast <double> (numero1) / numero2;
cout << "tomando enteramente seria: " << numero1 / numero2;
cout << "tomando con static es: " << numero3;
cin.get();
return 0;
}


Stakewinner00

linia 24, por que el getline? si es un string puedes usar como los otros
cin >> nombre;

elkiy

Cita de: Stakewinner00 en 19 Febrero 2013, 23:08 PM
linia 24, por que el getline? si es un string puedes usar como los otros
cin >> nombre;


Hola mas que nada es porque es un nombre, getline te permite que el usuario ingrese caracteres con espacios

engel lex

acaso cin no permite espacios?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

elkiy

Cita de: engelx en 19 Febrero 2013, 23:26 PM
acaso cin no permite espacios?

creo que no, y si lso permite igual quiero saber porq salta el getline XD

engel lex

limpia el buffer... en c creo que con un getline vacio :P
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

elkiy

Cita de: engelx en 19 Febrero 2013, 23:43 PM
limpia el buffer... en c creo que con un getline vacio :P

como es eso? porque si pongo getline(); antes del otro get me da error :(

engel lex

bueno coloca 2 veces el mismo getline, el primero agarra lo que está en el buffer el segundo los datos que quieres... (sorry tengo tiempo sin usar c, pero eso es algo común en c, j y algunos otros lenguajes)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

elkiy

Cita de: engelx en 19 Febrero 2013, 23:52 PM
bueno coloca 2 veces el mismo getline, el primero agarra lo que está en el buffer el segundo los datos que quieres... (sorry tengo tiempo sin usar c, pero eso es algo común en c, j y algunos otros lenguajes)

Gracias hay andubo :D

amchacon

Cita de: engelx en 19 Febrero 2013, 23:26 PM
acaso cin no permite espacios?
No, cada vez que pulsas la tecla "espacio" se da la lectura por terminada (como si pulsaras enter).

Por eso hay que usar getline

PD: Repito, no tienes que usar todos esos "using std::". Basta con que pongas uno genérico:

Código (cpp) [Seleccionar]
using namespace std;
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar