为什么重载输出<<遇到字符串就不行了
如果没有字符串,而是int或float等,就没问题。快把我逼疯了,求救!!!!
#include <iostream.h>
#include <string>
class phone_book
{
public:
std::string name;
std::string add;
std:: string apart;
std::string home;
std::string mobil;
friend ostream& operator <<(ostream&,phone_book&);
}
ostream& operator <<(ostream&output,phone_book&book)
{
output<<book.name <<" "<<book.add <<" "<<book.apart <<" "<<book.home <<" "<<book.mobil <<endl;
return output;
}
int main(void)
{
using namespace std;
phone_book book;
cout<<"input name:"<<endl;
cin>>book.name ;
cout<<"input address:"<<endl;
cin>>book.add ;
cout<<"input apartment:"<<endl;
cin>>book.apart;
cout<"input home_call number:"<<endl;
cin<<book.home ;
cout<<"input mobil:"<<endl;
cin<<book.mobil ;
cout<<book;
return 0;
}
[最优解释]
楼主代码贴出来的是不是原代码啊,怎么有这么多错误呢
cout<"input home_call number:"<<endl; // <<
cin<<book.home ; // >>
cout<<"input mobil:"<<endl;
cin<<book.mobil ; // >>
#include <iostream>
#include <string>
using namespace std;
class phone_book
{
public:
std::string name;
std::string add;
std::string apart;
std::string home;
std::string mobil;
friend ostream& operator <<(ostream&,phone_book&);
};
ostream& operator <<(ostream &output,phone_book &book)
{
output<<book.name <<" "<<book.add <<" "<<book.apart <<" "<<book.home <<" "<<book.mobil <<endl;
return output;
}
int main(void)
{
using namespace std;
phone_book book;
cout<<"input name:"<<endl;
cin>>book.name ;
cout<<"input address:"<<endl;
cin>>book.add ;
cout<<"input apartment:"<<endl;
cin>>book.apart;
cout<<"input home_call number:"<<endl;
cin>>book.home;
cout<<"input mobil:"<<endl;
cin>>book.mobil ;
cout<<book;
return 0;
}