Code Bye

对>>的重载用于结构体

#include<iostream>
using namespace std;
struct Date
{
unsigned day_ : 5;
unsigned month_ : 4;
int year_ : 15;
Date(unsigned day, unsigned month, int year)
{
day_ = day;
month_ = month;
year_ = year;
}
};
istream& operator>>(istream & input, Date & date)
{
const int buffsize = 6;
char buffer[buffsize];
input.getline(buffer, buffsize, “/”);
date.day_ = atoi(buffer);
input.getline(buffer, buffsize, “/”);
date.month_ = atoi(buffer);
input >> date.year_; //此处用input>>date.year_报错,提示没有与操作数匹配的运算符
int buffyear_; //题主不得已用了一个局部变量来存储并的到year_的值
input >> buffyear_;
date.year_ = buffyear_;
return input;
}
ostream& operator<<(ostream & output, Date & date)
{
output << date.day_ << “/t” << date.month_ << “/t” << date.year_ << endl;
}
实在没有弄懂为什么此处不可以直接用input>>,莫非是编译器的问题吗?求高手指点
解决方案

20

很显然的cin.operator>>没有关于位域的重载,原因是位域这种东西不是让你用来节省内存的

40

>>运算符没有对结构体位域的重载
另外写入文件的最小单位是1字节,而不是1位

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明对>>的重载用于结构体