????4.2 ??????????
????IO???????3?????????????????????????
????s.clear(); // ????s??????????????λ?????????????????Ч??????good????true
????s.clear(flags); // ?????????flags???λ??????s?ж????????????λ
????s.setstate(flags); // ?????????flags???λ??????s?ж????????????λ??
????s.rdstate(); // ???????iostate?????????????????
?????????????????????????Щ?????????
????iostream::iostate old_state = cin.rdstate(); // ???cin???????
????cin.clear(); // ???cin??Ч
????process_input(cin); // ???cin
????cin.setstate(old_state); // ??cin????????
????cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit); // ??failbit??badbit??λ??????eofbit????
????5??IO?????? 5.1 ??????
?????????????????????????????
????int main()
????{
????char ch;
????while (cin >> ch && ch!='#')
????{
????cout << ch;
????}
????return 0;
????}
????????????????????????????????????????????????????#??cin??????????????????????????????????????Ч???????????????????????????rroonnyy#???????????????????????????????????????????????????
????ronny#abc [Enter]
????ronny
??????????????????????????????????????????????????????????????????????????????????á????????????????????????????????????????????????鱻??????洢??????????????????????洢?????С???????????????????????ζ?????????á?
??????????????????????????????????????д?????????????????????????????????????????????????????????????
?????????Щ?????????????????????????磺?????????????????????????
??????????????
????1????????壺?????????????????????????????????????????????????????????????????С?
????2???л??壺???????????????????????????????????????????л??壬??????????????????????
????5.2 ???????
???????潲???????????壬??C++?е???????????????
?????????????????????????????????????????д??????????磬??????????????
????os<<”please enter a value??”;
??????????????????????????????п??????????????????????У??????????????????????????????????????????????????????????д???????????豸??д????????????????????????????????????????????豸д?????????????????????????
?????????????£?????????????д??????豸?????????????к??
????<1> ?????????????????main??????return??????????????????±???С?
????<2> ???????????????????壬?????μ???????????д????????
????<3> ?????????ò????endl???????????????
????<4> ???????????????????ò????unitbuf??????????????????????????????????£???cerr??????unitbuf??????д??cerr???????????????μ??
????<5> ???????????????????????????????????£?????д??????????????????????????????????£?cin??cerr????????cout??????cin??дcerr????cout?????????????
????????endl?????????в???????????IO???л??????????????????flush??ends??flush????????????????????κζ?????????ends?????????????????????????????????
????cout << "hi!" << endl; // ??? hi ????????з??????????????
????cout << "hi!" << flush; // ???hi??????????????????????κζ??????
????cout << "hi!" << ends; // ???hi???????????????????????
?????????????????????????????????????????unitbuf???????????????????????????д?????????????flush????????nounitbuf???????????????????????????????????????????????
????cout << unitbuf; // ?????????????????????????
????// ?κ????????????£??????
????cout << nounitbuf; // ???????????巽?
?????????????????????????????????????μ????????????????????????????????????????????????е???????
???????????????istream?????????????ostream???????????ostream?????????????ostream??
????cin.tie(&cout); // ??????????cin??cout?????????
????// s.tie???s????????????????????????????????????????δ??????????????????
????ostream *old_tie = cin.tie(nullptr); // ??cin????????????????????old_tie???cout
????cin.tie(&cerr);  // ???cin?????cerr??????cout
????cin.tie(old_tie);  // ???cin??cout??????????
????6?????????? 6.1 ????????????
??????????????????????????????????????????????????????????open????????????????
????string infile="../input.txt";
????string outfile = "../output.txt";
????ifstream in(infile); // ??????????
????ofstream out;
????out.open(outfile); // ??open?????
???????????open????failbit????λ?????????open????м????????????????
???????????????????ifstream??????????????????????????????????????д?????ofstream?????????????????????????????????????
???????????????????????????????????????????????????????????????????????open????????????failbit????λ???????????????????????????????????????????????????????????????????????????????????????????????????????close???????????ɡ?
????6.2 ?????
????????????????????????????????????????????????????г?????????????????壺
????in
????????????
????out
??????д?????
????app
???????д????????λ??????β
????ate
?????????????????λ??????β
????trunc
??????????
????binary
?????????????????IO
??????????????????????????open???????????????????????????????漸???????
????<1>??????ofstream??fstream?????趨out????
????<2>??????ifstream??fstream?????趨in????
????<3>???out?趨???????趨trunc????
????<4>??trunc??б??趨???????趨app??????app???£?????????????out?? ????????????????????????
????<5>???????£??????????????trunc????out????????????????????????out????????????????????????????app??????????????????д??????β???????????in????????????????ж?д??????
????<6>ate??binary???????????κ???????????????????????????κ???????????á?
??????out??????????????????????????????ofstream????????????????????????app????
????// ??????????У?file1???????
????ofstream out("file1"); // ????????????????????????
????ofstream out2("file1"?? ofstream::out); // ???????????
????ofstream out3("file1"?? ofstream::out | ofstream::trunc); // ?????????
????// ???????????????????????????app
????ofstream app("file2"?? ofstream::app); // ??????????
????ofstream app("file2"?? ofstream::app | ofstream::out);