重载输出流操作符<<后和预想中的结果有差异
第一次来这个论坛所以没有多少分请见谅
- C/C++ code
#include <functional>#include <string>#include <algorithm>#include <iostream>#include <vector>#include <iterator>#include <iomanip>using namespace std;class Student{public: string name; int grade; Student(string name1,int grade1) { name=name1; grade=grade1; } //bool operator<(const Student &s) const //{ // return grade<s.grade; //} friend ostream& operator<<(ostream& os,const Student &s);};ostream & operator<<(ostream & os,const Student &s){ os<<s.name<<'\t'<<s.grade<<'\n'; return os;}void main(){ Student s1("zhangsan",60); Student s2("lisi",80); Student s3("wangwu",70); Student s4("zhaoliu",90); Student s5("12313",20); cout<<s1<<endl; cout<<s2<<endl; cout<<s3<<endl; cout<<s4<<endl; cout<<s5<<endl; system("pause");}
显示结果是:
zhangsan 60
lisi 80
wangwu 70
zhaoliu 90
12313 20
请按任意键继续. . .
和想象中的不同
zhangsan 60
lisi 80
wangwu 70
zhaoliu 90
12313 20
请按任意键继续. . .
求解原因
[解决办法]
\t是按照8位一缩进,而不是你输入了\t就会有8个空格。