我正在尝试重载 >> 运算符以读取单个(使用创建的enum Symbol {e,a,b,c,d};
)符号:
istream & operator >> (istream & is, Symbol & sym) {
Symbol Arr[]={e,a,b,c,d};
char ch;
is>>ch;
if (strchr("eabcd",ch))
sym=Arr[ch-'e'];
else {
is.unget();
is.setstate(ios::failbit);
}
return is;
}
但这会读取一些垃圾(数字)而不是我正在寻找的内容,导致尝试使用 << 重载打印它时出现分段错误,我做错了什么?编辑:哦,当然我using namespace std;
在开始时确实添加了,与包含iostream
and相同cstring
。