hae*_*mic 8 c++ iostream friend c++11
我做了这堂课:
class object {
// data...
public:
friend std::istream& operator>>(std::istream& in, object& o) {
char c, d;
in >> c >> d;
if (c == d) {
/*set the fail bit some how*/
in.putback(d);
in.putback(c);
} else
o.set_data(c, d);
return in;
}
};
Run Code Online (Sandbox Code Playgroud)
我正在查看文档(不太好),但找不到设置失败位的正确方法.我关心的原因是我希望能够while(std::cin>>obj)/*do stuff*/;喜欢用int来做.但是,如果我目前这样做,那么每当出现错误时都会有无限循环.-_-设置失败位是否可行,或者我将不得不以不同的方式处理此问题?
小智 11
您可以使用basic_ios :: setstate函数设置输入流的failbit :
in.setstate(std::ios_base::failbit);
Run Code Online (Sandbox Code Playgroud)
你可以使用setstate.请注意,您应该在调用putback之后将其放置,否则将不会putback成功编辑字符,因为流已处于错误状态.即
if (c==d) {
in.putback(d);
in.putback(c);
/*set the fail bit some how*/
in.setstate(std::ios_base::failbit);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1145 次 |
| 最近记录: |