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
#include <iostream> using namespace std; class phone { friend istream &operator>> (istream &input, phone &num); friend ostream &operator<< (ostream &output, phone &num); private: char areaCode[4]; char exchange[4]; char line[5]; }; ostream &operator<< (ostream &output, phone &num) { output << "(" << num.areaCode << ") " << num.exchange << "-" << num.line << endl; } istream &operator>> (istream &input, phone &num) { input.ignore(); // Ignora el ( input.getline(num.areaCode, 4); // Lee el número. input.ignore(2); // Ignora el ") " input.getline(num.exchange, 4); // Lee el número. input.ignore(); // Ignora el "-" input.ignore(num.line, 5); // Lee el último número. return input; } int main() { phone test; cout << "Insert your phone \n"; cin >> test; cout << "Your phone is : " << test << end; return 0; }
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.