здравствуйте вот пример из книги Дейтела "Как программировать на С++"
| Код | #include "stdafx.h" #include <iostream>
using namespace std;
class PhoneNumber { friend ostream& operator<<(ostream&, const PhoneNumber&); friend istream& operator>>(istream&, PhoneNumber&);
private: char areaCode[4]; char exchange[4]; char line[5]; };
int _tmain(int argc, _TCHAR* argv[]) { PhoneNumber num;
cout<<"Enter you phonenumber as (123) 456-7890\n"; cin>>num;
cout<<num<<endl;
return 0; }
ostream& operator<<(ostream& out, const PhoneNumber& num) { out<<"Your enter number is: " <<"("<<num.areaCode<<") " <<num.exchange<<" - " <<num.line<<endl;
return out; } istream& operator>>(istream& in, PhoneNumber& num) { in.ignore(); in.getline(num.areaCode,4); in.ignore(); in.getline(num.exchange,5); in.ignore(); in.getline(num.line,5);
return in; }
|
однако есть проблемы при считывании номера телефона в этом участке кода:
| Код | istream& operator>>(istream& in, PhoneNumber& num) { in.ignore(); in.getline(num.areaCode,4); in.ignore(); in.getline(num.exchange,5); in.ignore(); in.getline(num.line,5);
return in; }
|
объясните мне пожалуйста как работает функция cin.ignore() и cin.getline(), не очень понимаю почему не получается корректно считать введенную стоку |