.


:




:

































 

 

 

 





istream ostream . ios, istream ostream, public-, :

inline int ios:: bad () const { return state & badbit; }

inline int ios:: eof () const { return state & eofbit; }

inline int ios:: fail () const { return state & (badbit | failbit); }

inline int ios:: good () const { return state == 0; }

, ios:

public:

enum io_state { goodbit = 0x00,

eofbit = 0x01,

failbit = 0x02,

badbit = 0x04 };

goodbit eofbit, . goodbit, . eofbit, . failbit badbit . failbit , , . badbit .

ios , (rdstate) (clear) :

inline int ios:: rdstate () const { return state; }

inline void ios:: clear (int _i=0){ lock(); state = _i; unlock(); }

, , / , clear().

#include <iostream>

using namespace std;

int main()

{ int i, flags;

char c;

do{ cin >> i;

flags=cin.rdstate(); // cin

if(flags & ios::failbit)

{ cout << "error in stream"<< endl;

cin.clear(0); //

cin>>c; // int

}

else cout << i<<endl;

} while(flags); //

return 0;

}

cin.clear(0) . , , badbit, clear(ios::badbit). , .

#include <fstream>

#include <iostream>

using namespace std;

int main()

{ ifstream in("file");

int state;

char ss[10];

while(1)

{ state=in.rdstate(); // in ()

if (state) //

{ if(state&ios::badbit) cout<<" "<<endl;

else if(state&ios::eofbit) cout<<" "<<endl;

return 0;

}

else in >> ss;

}

}

, ios !:

inline int ios::operator!() const { return state&(badbit|failbit); }

! badbit failbit, , :

if(!cin) cout << cin<<endl; //

else cin>>i; //

 





:


: 2015-09-20; !; : 990 |


:

:

.
==> ...

1514 - | 1343 -


© 2015-2024 lektsii.org - -

: 0.009 .