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:
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.
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 (cpp) [Seleccionar]
#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.