elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  cin.getline problemas en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: cin.getline problemas en C++  (Leído 1,807 veces)
vikour92

Desconectado Desconectado

Mensajes: 13


Ver Perfil
cin.getline problemas en C++
« en: 23 Mayo 2012, 19:24 pm »

Buenos días a todos.

Tengo un problema con un ejercicio y no se por donde pillarlo. Trata sobre una clase de teléfonos y tengo que hacer la homonimia de operadores para introducir telefonos desde cout y cin.

El formato de entrada seria por ejemplo -->  (800) 555-1212
El programa debería de imprimirlo así.

El código es el siguiente:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class phone {
  6.   friend istream &operator>> (istream &input, phone &num);
  7.   friend ostream &operator<< (ostream &output, phone &num);
  8. private:
  9.   char areaCode[4];
  10.   char exchange[4];
  11.   char line[5];
  12. };
  13.  
  14. ostream &operator<< (ostream &output, phone &num)
  15. {
  16.   output << "(" << num.areaCode << ") " << num.exchange << "-"
  17.             << num.line << endl;
  18. }
  19.  
  20. istream &operator>> (istream &input, phone &num)
  21. {
  22.   input.ignore();                                  // Ignora el (
  23.   input.getline(num.areaCode, 4);        // Lee el número.
  24.   input.ignore(2);                                // Ignora el ") "
  25.   input.getline(num.exchange, 4);        // Lee el número.
  26.   input.ignore();                                  // Ignora el "-"
  27.   input.ignore(num.line, 5);                  // Lee el último número.
  28.  
  29.   return input;
  30. }
  31.  
  32. int main()
  33. {
  34.   phone test;
  35.  
  36.   cout << "Insert your phone \n";
  37.   cin >> test;
  38.   cout << "Your phone is : " << test << end;
  39.  
  40.   return 0;
  41. }
  42.  

Bien, el problema que tengo es que sale de la siguiente forma:
(salida del programa)
------------------------------------------------------------------------
Insert your phone
(800) 555-1212
Your phone is : (800)  -
------------------------------------------------------------------------

Lo he depurado con gdb y es como si no leyera con getline. He estado mirando cosas por ahí como hacer antes un ignore por si hubiera algún carácter de terminación o hacer clean(). Pero nada ...

A ver si me pudieran ayudar por favor.

Gracias por la atención.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
getline()
Programación C/C++
Geek7 3 11,594 Último mensaje 29 Julio 2010, 20:52 pm
por Geek7
cin.getline y cin.ignore
Programación C/C++
ricardo2013 6 4,575 Último mensaje 25 Octubre 2012, 17:01 pm
por rir3760
Problema con el delimitador de getline [SOLUCIONADO]
Programación C/C++
anonimo12121 3 5,145 Último mensaje 1 Abril 2013, 18:13 pm
por anonimo12121
Problema con cin.getline
Programación C/C++
erest0r 8 6,591 Último mensaje 24 Agosto 2013, 03:33 am
por erest0r
Problemas con GetLIne y Threads en c
Programación C/C++
jomoza 2 1,881 Último mensaje 19 Diciembre 2014, 02:16 am
por jomoza
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines