Domingo 17 de Noviembre de 2024, 13:43
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema con la funcion Getline
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema con la funcion Getline (Leído 8288 veces)
niniodinho
Nuevo Miembro
Mensajes: 3
Problema con la funcion Getline
«
en:
Viernes 17 de Abril de 2009, 19:02 »
0
Hola a todos. Recién estoy empezando con C++ y la verdad que la estoy llevando bastante bien, salvo por algunos puntos.
Una pregunta que me ha surgido trabajando con variables del tipo string: La cosa es que quiero ingresar una cadena completa por teclado, por lo que el cin no me ayuda ya que corta en cada espacio, por lo que utilizo la función getline(cin,cadena), donde cadena sería una variable string. He aquí una porción de mi código:
for (int i=0;i<5;i++){
cout<<"Ingrese el nombre del partido numero "<<i+1<<endl;
getline(cin,ArrPartidos
.nombre);
//cin>>ArrPartidos
.nombre;
cout<<"Ingrese la cantidad de votos recibidos"<<endl;
cin>>ArrPartidos
.votos;
}
En esa porción de código, la primera vez que en entra (i=0), me deja ingresar la cadena normalmente, pero luego, cuando i=1, saltea la línea del getline, y el programa se rompe.
A qué se debe esto? No es la primera vez que me pasa.
Gracias.
Pd. La cadena de caracteres pertenece a un arreglo, cuyas celdas contienen campos de un registro.
Tweet
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Problema con la funcion Getline
«
Respuesta #1 en:
Viernes 17 de Abril de 2009, 19:55 »
0
Me parece que estas utilizando mal la funcion getline de C++, y estas confundido un poco entre la clase string, y un arreglo de char, ya que no son lo mismo.
La funcion getline espera como primer parametro una variable de tipo char * (arreglo de char o puntero a char), no un string, y como segundo parametro, la longitud del arreglo, para no leer mas alla del final de la cadena
entonces, la utilizacion correcta de getline seria:
Código: C++
char
nombre
[
50
]
cin
.
getline
(
nombre,
50
)
;
Te dejo unos enlaces para que veas la sintaxis correcta de getline, y ademas que es un string en C++, que no es lo msimo que un arreglo de char.
http://www.cplusplus.com/reference/iost ... m/getline/
http://www.cplusplus.com/reference/string/string/
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
niniodinho
Nuevo Miembro
Mensajes: 3
Re: Problema con la funcion Getline
«
Respuesta #2 en:
Viernes 17 de Abril de 2009, 21:46 »
0
El tema es que he visto la función getline siendo utilizada de esta forma muchísimas veces. La cuestión es que en la primera vez que pasa por ahí en el ciclo, lo hace bien, es decir me permite el ingreso y guarda bien lo que tecleo, pero de la segunda en adelante no me deja ni siquiera teclear.
Sino, utilizando el tipo string, hay otra forma de leer la cadena completa?
Gracias
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Problema con la funcion Getline
«
Respuesta #3 en:
Viernes 17 de Abril de 2009, 22:04 »
0
Vos estas usando esta funcion:
http://www.cplusplus.com/reference/string/getline/
Ahora, depuralo o deja una version compilable con la minima expresion del problema.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
niniodinho
Nuevo Miembro
Mensajes: 3
Re: Problema con la funcion Getline
«
Respuesta #4 en:
Sábado 18 de Abril de 2009, 01:50 »
0
Claro, utilizo esa misma función, pero me pide el ingreso por el teclado sólo en la primera vuelta del ciclo. Luego, saltea esa línea únicamente, y el programa devuelve un número negativo de 6 cifras mas o menos, en vez del 0.
Qué puedo hacer para que me deje ingresar por teclado las veces que dura el ciclo?
Gracias
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Problema con la funcion Getline
«
Respuesta #5 en:
Sábado 18 de Abril de 2009, 09:45 »
0
Podes pedir los votos asi supongo:
Código: Text
cout<<"Ingrese la cantidad de votos recibidos"<<endl;
string mystr;
getline(cin, mystr);
stringstream(mystr) >> ArrPartidos[i].votos;
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema con la funcion Getline