[英]Cannot explain why std::istream_iterator set std::ios_base in error state
[英]why istream,ostream,iostream,ios_base all work here
int main()
{
int a=0;
int b=0;
std::cout<<"Please enter an int: "<<std::endl;
std::cin>>a;
auto old_state =std::cin.rdstate(); // remember the current state of cin
std::cin.clear(); // make cin valid
std::cout<<"Please enter another int: "<<std::endl;
std::cin>>b;// use cin
auto new_state = std::cin.rdstate();
if(old_state==std::istream::failbit&&new_state==std::istream::failbit)
//I tried std::ostream,std::iostream,ios_base they all work.
std::cout<<"Both are failbit!"<<std::endl;
}
我剛剛遇到了關於C ++ Primer的IO章節。 我自己嘗試了這個代碼,並且驚奇地發現,在最后兩行中,我將std::istream
更改為std::ostream
, std::iostream
, std::ios_base
,當我輸入兩個char
時,它們似乎都有效。 有人請幫助用簡單的話來解釋這為什么會發生這種情況。 提前謝謝了!
因為failbit
是ios_base
的public
成員,所有其他類public
繼承自ios_base
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.