現在c++で多重定義について勉強しています。挿入演算子と抽出演算子を多重定義しようとしています。挿入演算子はコードに書いてある通りignoreで邪魔な文字を無視してgetlineでメンバ変数に文字を代入しようとしています。
しかし、これを実行すると最初の変数areaCodeには代入されるのですがそのあとの変数には代入されません。環境はVSの最新版です。
デバックで見たのですがのexchangeとlineには'\0'とフという文字が入っていました。
これをうまく操作させるにはどのようにすればよいのでしょうか。
また、このコードはある参考書のサンプルコードになります。
c++
1 2#include <iostream> 3#include < string > 4using namespace std; 5 6 7class PhoneNum { 8 friend ostream& operator<<(ostream&, const PhoneNum&); 9 friend istream& operator>>(istream &, PhoneNum&); 10private: 11 char areaCode[4]; 12 char exchage[4]; 13 char line[5]; 14}; 15 16ostream& operator<<(ostream& output, const PhoneNum& num) 17{ 18 output << "(" << num.areaCode << ") " 19 << num.exchage << "-" << num.line; 20 21 return output; 22} 23 24istream& operator>>(istream &input, PhoneNum &num) 25{ 26 input.ignore(); 27 28 input.getline(num.areaCode, 4); 29 input.ignore(2); 30 input.getline(num.exchage, 4); 31 input.ignore(); 32 input.getline(num.line, 5); 33 34 return input; 35} 36 37int main() { 38 PhoneNum phone; 39 40 cout << "(123) 456-7890形式で電話番号を" 41 << "入力してください:\n"; 42 43 cin >> phone; 44 cout << "入力された電話番号は: \n" 45 << phone << '\n'; 46 return 0; 47 48} 49
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/09 04:35