锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 銆銆iostream涓哄唴緗被鍨嬬被鍨嬪璞℃彁渚涗簡杈撳叆杈撳嚭鏀寔錛屽悓鏃朵篃鏀寔鏂囦歡鐨勮緭鍏ヨ緭鍑猴紝綾葷殑璁捐鑰呭彲浠ラ氳繃瀵筰ostream搴?
鐨勬墿灞曪紝鏉ユ敮鎸佽嚜瀹氫箟綾誨瀷鐨勮緭鍏ヨ緭鍑烘搷浣溿? 銆銆涓轟粈涔堣瑕佹墿灞曟墠鑳芥彁渚涙敮鎸佸憿錛熸垜浠潵涓涓ず渚嬨?%CODE{"cpp"}% #include
<stdio.h> #include class Test { public: Test(int a=0,int b=0) { Test::a=a;
Test::b=b; } int a; int b; }; int main() { Test t(100,50);
printf("%???",t);//涓嶆槑紜殑杈撳嚭鏍煎紡 scanf("%???",t);//涓嶆槑紜殑杈撳叆鏍煎紡
cout<<t<<endl;//鍚屾牱涓嶅鏄庣‘ cin>>t;//鍚屾牱涓嶅鏄庣‘
system("pause"); } %ENDCODE%
鐢變簬鑷畾涔夌被鐨勭壒孌婃э紝鍦ㄤ笂闈㈢殑浠g爜涓紝鏃犺浣犱嬌鐢╟椋庢牸鐨勮緭鍏ヨ緭鍑猴紝鎴栬呮槸c++鐨勮緭鍏ヨ緭鍑洪兘涓嶆槸涓嶆槑紜殑涓涓〃紺猴紝鐢變簬c璇█娌℃湁榪愮畻絎﹂噸杞芥満
鍒訛紝瀵艱嚧stdio搴撶殑涓嶅彲鎵╁厖鎬э紝璁╂垜浠棤娉曡printf()鍜宻canf()鏀寔瀵硅嚜瀹氫箟綾誨璞$殑鎵╁厖璇嗗埆錛岃宑++鏄彲浠ラ氳繃榪愮畻絎﹂噸杞芥満鍒舵墿鍏?
iostream搴撶殑錛屼嬌緋葷粺鑳借兘澶熻瘑鍒嚜瀹氫箟綾誨瀷錛屼粠鑰岃杈撳叆杈撳嚭鏄庣‘鐨勭煡閬撲粬浠騫蹭粈涔堬紝鏍煎紡鏄粈涔堛? 銆銆鍦ㄤ笂渚嬩腑鎴戜滑涔嬫墍浠ョ敤printf涓巆out榪涜瀵規(guī)瘮鐩殑鏄負浜嗗憡璇夊ぇ瀹訛紝C涓嶤++澶勭悊杈撳叆杈撳嚭鐨勬牴鏈笉鍚岋紝鎴戜滑浠巆榪滅殑杈?
鍏ヨ緭鍑哄彲浠ュ緢鏄庢樉鐪嬪嚭鏄嚱鏁拌皟鐢ㄦ柟寮忥紝鑰宑++鐨勫垯鏄璞℃ā寮忥紝cout鍜宑in鏄痮stream綾誨拰istream綾葷殑瀵硅薄銆? 銆銆鎴戜滑鎵鐔熸?zhèn)夌殑杈撳叆杈撳嚭鎿嶄綔鍒嗗埆鏄敱istream(杈撳叆嫻?鍜宱stream(杈撳嚭嫻?榪欎袱涓被鎻愪緵鐨勶紝涓轟簡鍏佽鍙屽悜鐨勮緭鍏ワ紡
杈撳嚭錛岀敱istream鍜宱stream媧劇敓鍑轟簡iostream綾匯? 銆銆綾葷殑緇ф壙鍏崇郴瑙佷笅鍥撅細 iostream搴撳畾涔変簡浠ヤ笅涓変釜鏍囧噯嫻佸璞★細 銆銆杈撳嚭涓昏鐢遍噸杞界殑宸︾Щ鎿嶄綔絎︼紙<<錛夋潵瀹屾垚錛岃緭鍏ヤ富瑕佺敱閲嶈澆鐨勫彸縐繪搷浣滅(>>)瀹屾垚: 銆銆榪欎簺鏍囧噯鐨勬祦瀵硅薄閮芥湁榛樿鐨勬墍瀵瑰簲鐨勮澶囷紝瑙佷笅琛細1
iostream: istream 鍜?ostream
銆銆C++涓殑iostream搴撲富瑕佸寘鍚笅鍥炬墍紺虹殑鍑犱釜澶存枃浠?
IOSstream 搴?
fstream
iomainip
ios
iosfwd
iostream
istream
ostream
sstream
streambuf
strstream
銆銆涓婅〃涓殑鎰忔濊〃鏄巆in瀵硅薄鐨勯粯璁よ緭鍏ヨ澶囨槸閿洏錛宑out瀵硅薄鐨勯粯璁よ緭鍑鴻澶囨槸鏄劇ず鍣ㄥ睆騫曘?
C++瀵硅薄鍚?/u>
璁懼鍚嶇О
C涓爣鍑嗚澶囧悕
榛樿鍚箟
cin
閿洏
stdin
鏍囧噯杈撳叆
cout
鏄劇ず鍣ㄥ睆騫?
stdout
鏍囧噯杈撳嚭
cerr
鏄劇ず鍣ㄥ睆騫?
stderr
鏍囧噯閿欒杈撳嚭
銆銆閭d箞鍘熺悊涓婏跡++鏈夋槸濡備綍鍒╃敤cin錛廲out瀵硅薄涓庡乏縐誨拰鍙崇Щ榪愮畻絎﹂噸杞芥潵瀹炵幇杈撳叆杈撳嚭鐨勫憿錛?
銆銆涓嬮潰鎴戜滑浠ヨ緭鍑轟負渚嬶紝璇存槑鍏跺疄鐜板師鐞嗭細
銆銆涓鍙ヨ緭鍑鴻鍙ワ細cout<<"www.cndev-lab.com"錛涳紝浜嬪疄涓婅皟鐢ㄧ殑灝辨槸 ostream& operator<<(ostream &temp,char *ps);榪欎釜榪愮畻絎﹂噸杞藉嚱鏁幫紝鐢變簬榪斿洖鐨勬槸嫻佸璞$殑寮曠敤錛屽紩鐢ㄥ彲浠ヤ綔涓哄乏鍊間嬌鐢紝鎵浠ュ綋紼嬪簭涓湁綾諱技cout<<"www.cndev- lab.com"<<"涓浗杞歡寮鍙戝疄楠屽";榪欐牱鐨勮鍙ュ嚭鐜扮殑鏃跺欙紝灝辮兘澶熸瀯鎴愯繛緇緭鍑恒?
銆銆鐢變簬iostream搴撲笉鍏夋敮鎸佸璞$殑杈撳叆杈撳嚭錛屽悓鏃朵篃鏀寔鏂囦歡嫻佺殑杈撳叆杈撳嚭錛屾墍浠ュ湪璇︾粏璁茶В宸︾Щ涓庡彸縐昏繍綆楃閲嶈澆鍙墠錛屾垜浠? 鏈夊繀瑕佸厛瀵規(guī)枃浠剁殑杈撳叆杈撳嚭浠ュ強杈撳叆杈撳嚭鐨勬帶鍒剁鏈夋墍浜嗚В銆?
鐢變簬鏂囦歡璁懼騫朵笉鍍忔樉紺哄櫒灞忓箷涓庨敭鐩橀偅鏍鋒槸鏍囧噯榛樿璁懼錛屾墍浠ュ畠鍦╢stream.h澶存枃浠朵腑鏄病鏈夊儚cout閭f牱棰勫厛瀹氫箟鐨勫叏灞 瀵硅薄錛屾墍浠ユ垜浠繀欏昏嚜宸卞畾涔変竴涓綾葷殑瀵硅薄錛屾垜浠浠ユ枃浠朵綔涓鴻澶囧悜鏂囦歡杈撳嚭淇℃伅(涔熷氨鏄悜鏂囦歡鍐欐暟鎹?錛岄偅涔堝氨搴旇浣跨敤ofstream綾匯?
銆銆ofstream綾葷殑榛樿鏋勯犲嚱鏁板師褰負錛?%CODE{"cpp"}% ofstream::ofstream(const char *filename,int mode = ios::out,int openprot = filebuf::openprot); %ENDCODE%
銆銆鍏朵腑mode鍜宱penprot榪欎袱涓弬鏁扮殑鍙夐」琛ㄨ涓嬭〃錛?
mode 灞炴ц〃 | |
ios::app | 浠ヨ拷鍔犵殑鏂瑰紡鎵撳紑鏂囦歡 |
ios::ate | 鏂囦歡鎵撳紑鍚庡畾浣嶅埌鏂囦歡灝撅紝ios:app灝卞寘鍚湁姝ゅ睘鎬? |
ios::binary | 浠ヤ簩榪涘埗鏂瑰紡鎵撳紑鏂囦歡錛岀己鐪佺殑鏂瑰紡鏄枃鏈柟寮忋備袱縐嶆柟寮忕殑鍖哄埆瑙佸墠鏂? |
ios::in | 鏂囦歡浠ヨ緭鍏ユ柟寮忔墦寮 |
ios::out | 鏂囦歡浠ヨ緭鍑烘柟寮忔墦寮 |
ios::trunc | 濡傛灉鏂囦歡瀛樺湪錛屾妸鏂囦歡闀垮害璁句負0 |
openprot 灞炴ц〃 | |
灞炴? | 鍚箟 |
0 | 鏅氭枃浠訛紝鎵撳紑璁塊棶 |
1 | 鍙鏂囦歡 |
2 | 闅愬惈鏂囦歡 |
4 | 緋葷粺鏂囦歡 |
瀹炰緥浠g爜濡備笅錛?%CODE{"cpp"}% #include
int main() { ofstream myfile("c:\\1.txt",ios::out|ios::trunc,0); myfile<<"涓浗杞歡寮鍙戝疄楠屽"<<endl<<"緗戝潃錛?<<"www.cndev- lab.com"; myfile.close() system("pause"); } %ENDCODE% 鏂囦歡浣跨敤瀹屽悗鍙互浣跨敤close鎴愬憳鍑芥暟鍏抽棴鏂囦歡銆?
銆銆ios::app涓鴻拷鍔犳ā寮忥紝鍦ㄤ嬌鐢ㄨ拷鍔犳ā寮忕殑鏃跺欏悓鏃惰繘琛屾枃浠剁姸鎬佺殑鍒ゆ柇鏄竴涓瘮杈冨ソ鐨勪範鎯?
銆銆紺轟緥濡備笅錛?
%CODE{"cpp"}% #include
銆銆鍦ㄥ畾涔塱fstream鍜宱fstream綾誨璞$殑鏃跺欙紝鎴戜滑涔熷彲浠ヤ笉鎸囧畾鏂囦歡銆備互鍚庡彲浠ラ氳繃鎴愬憳鍑芥暟open()鏄懼紡鐨勬妸涓 涓枃浠惰繛鎺ュ埌涓涓被瀵硅薄涓娿?
銆銆渚嬪錛?
%CODE{"cpp"}% #include
銆銆浠g爜濡備笅錛?%CODE{"cpp"}% #include
鎴戜滑鍦ㄧ畝鍗曚粙緇嶈繃ofstream綾誨拰ifstream綾誨悗錛屾垜浠啀鏉ョ湅涓涓媐stream綾伙紝fstream綾繪槸鐢? iostream媧劇敓鑰屾潵錛宖stream綾誨璞″彲浠ュ悓瀵規(guī)枃浠惰繘琛岃鍐欐搷浣溿?
銆銆紺轟緥浠g爜濡備笅錛?%CODE{"cpp"}% #include
myfile.open("c:\\1.txt",ios::in,0); if(myfile) { cout<<"鏂囦歡璇婚敊璇?鏂囦歡鍙兘涓㈠け!"<<endl; system("pause"); exit(1); } char ch; while(myfile.get(ch)) { cout.put(ch); } myfile.close(); system("pause"); } %ENDCODE% 鐢變簬fstream綾誨彲浠ュ鏂囦歡鍚屾椂榪涜璇誨啓鎿嶄綔錛屾墍浠ュ瀹冪殑瀵硅薄榪涜鍒濆璇濈殑鏃跺欎竴瀹氳鏄懼紡鐨勬寚瀹歮ode鍜宱penprot鍙傛暟銆?
銆銆鎺ヤ笅鏉ユ垜浠潵瀛︿範涓涓嬩覆嫻佺被鐨勫熀紜鐭ヨ瘑錛屼粈涔堝彨涓叉祦綾伙紵
銆銆鎴戜滑鍏堢湅鐪嬬湅C++鏄浣曞C椋庢牸鐨勫瓧絎︿覆嫻佽繘琛屾帶鍒剁殑錛孋涓殑瀛楃涓插叾瀹炰篃灝辨槸瀛楃鏁扮粍錛屽瓧絎︽暟緇勫唴鐨勬暟鎹湪鍐呭瓨涓殑浣嶇疆鐨? 鎺掑垪鏄繛緇殑錛屾垜浠氬父鐢?char str[size]鎴栬卌har *str鐨勬柟寮忓0鏄庡垱寤篊椋庢牸瀛楃鏁扮粍錛屼負浜嗚兘璁╁瓧絎︽暟緇勪綔涓鴻澶囧茍鎻愪緵杈撳叆杈撳嚭鎿嶄綔錛孋++寮曞叆浜唎strstream銆乮strstream銆? strstream榪欎笁涓被錛岃浣跨敤浠栦滑鍒涘緩瀵硅薄灝卞繀欏誨寘鍚玸trstream.h澶存枃浠躲?
銆銆istrstream綾繪槸浠巌stream錛堣緭鍏ユ祦綾伙級鍜宻trstreambase錛堝瓧絎︿覆嫻佸熀綾伙級媧劇敓鑰? 鏉ワ紝ostrstream鏄粠 ostream錛堣緭鍑烘祦綾伙級鍜宻trstreambase錛堝瓧絎︿覆嫻佸熀綾伙級媧劇敓鑰屾潵錛宻trstream鍒欐槸浠巌ostream(杈撳叆杈撳嚭嫻佺被)鍜屽拰 strstreambase錛堝瓧絎︿覆嫻佸熀綾伙級媧劇敓鑰屾潵銆?
銆銆浠栦滑鐨勭戶鎵垮叧緋誨涓嬪浘鎵紺?
銆銆涓叉祦鍚屾牱涓嶆槸鏍囧噯璁懼錛屼笉浼氭湁棰勫厛瀹氫箟濂界殑鍏ㄥ眬瀵硅薄錛屾墍浠ヤ笉鑳界洿鎺ユ搷浣滐紝闇瑕侀氳繃鏋勯犲嚱鏁板垱寤哄璞°?
綾籭strstream鐨勬瀯閫犲嚱鏁板師褰㈠涓嬶細 %CODE{"cpp"}% istrstream::istrstream(const char *str,int size); %ENDCODE% 鍙傛暟1琛ㄧず瀛楃涓叉暟緇?鑰屽弬鏁?琛ㄧず鏁扮粍澶у皬錛屽綋size涓?鏃訛紝琛ㄧずistrstream綾誨璞$洿鎺ヨ繛鎺ュ埌鐢眘tr鎵鎸囧悜鐨勫唴瀛樼┖闂村茍浠0緇撳熬鐨? 瀛楃涓層?
銆銆涓嬮潰鐨勭ず渚嬩唬鐮佸氨鏄埄鐢╥strstream綾誨垱寤虹被瀵硅薄錛屽埗瀹氭祦杈撳叆璁懼涓哄瓧絎︿覆鏁扮粍錛岄氳繃瀹冨悜涓涓瓧絎﹀瀷瀵硅薄杈撳叆鏁版嵁銆備唬
鐮佸涓嬶細 %CODE{"cpp"}% #include
銆銆鎴戜滑鏉ヤ竴涓ず渚嬩唬鐮侊細 %CODE{"cpp"}% #include
int main() { stringstream ostr("ccc"); ostr.put('d'); ostr.put('e'); ostr<<"fg"; string gstr = ostr.str(); cout<<gstr<<endl;
char a; ostr>>a; cout<<a
system("pause"); } %ENDCODE%
闄ゆ鑰屽錛宻tringstream綾葷殑瀵硅薄鎴戜滑榪樺父鐢ㄥ畠榪涜string涓庡悇縐嶅唴緗被鍨嬫暟鎹箣闂寸殑杞崲銆傜ず渚嬩唬鐮佸涓嬶細
%CODE{"cpp"}% #include
int main() { stringstream sstr; //--------int杞瑂tring----------- int a=100; string str; sstr<<a; sstr>>str; cout<<str<<endl; //--------string杞琧har[]-------- sstr.clear();//濡傛灉浣犳兂閫氳繃浣跨敤鍚屼竴stringstream瀵硅薄瀹炵幇澶氱綾誨瀷鐨勮漿鎹紝璇鋒敞鎰忓湪姣忎竴嬈¤漿鎹箣鍚庨兘蹇呴』璋冪敤clear() 鎴愬憳鍑芥暟銆?string name = "colinguan"; char cname[200]; sstr<<name; sstr>>cname; cout<<cname; system("pause"); } %ENDCODE% 鎺ヤ笅鏉ユ垜浠潵瀛︿範涓涓嬭緭鍏?杈撳嚭鐨勭姸鎬佹爣蹇楃殑鐩稿叧鐭ヨ瘑.
int main() { int a; cin>>a; cout<<cin.rdstate()<<endl; if(cin.rdstate() == ios::goodbit) { cout<<"杈撳叆鏁版嵁鐨勭被鍨嬫紜紝鏃犻敊璇紒"<<endl; } if(cin.rdstate() == ios_base::failbit) { cout<<"杈撳叆鏁版嵁綾誨瀷閿欒錛岄潪鑷村懡閿欒錛屽彲娓呴櫎杈撳叆緙撳啿鍖烘尳鍥烇紒"<<endl; } system("pause"); } %ENDCODE% 銆銆鍙︿竴縐嶆柟娉曞垯鏄嬌鐢ㄤ笅闈換浣曚竴涓嚱鏁版潵媯嫻嬬浉搴旂殑杈撳叆/杈撳嚭鐘舵侊細 %CODE{"cpp"}% bool bad(); bool eof(); bool fail(); bool good(); %ENDCODE%
銆銆涓嬩緥紺轟緥錛岃〃紺哄嚭浜嗕笂闈㈠悇鎴愬憳鍑芥暟鐨勭敤娉曪細 %CODE{"cpp"}% #include
int main() { int a; cin>>a; cout<<cin.rdstate()<<endl; if(cin.good()) { cout<<"杈撳叆鏁版嵁鐨勭被鍨嬫紜紝鏃犻敊璇紒"<<endl; } if(cin.fail()) { cout<<"杈撳叆鏁版嵁綾誨瀷閿欒錛岄潪鑷村懡閿欒錛屽彲娓呴櫎杈撳叆緙撳啿鍖烘尳鍥烇紒"<<endl; } system("pause"); } %ENDCODE% 濡傛灉閿欒鍙戠敓錛岄偅涔堟祦鐘舵佹棦琚爣璁頒負閿欒錛屼綘蹇呴』娓呴櫎榪欎簺閿欒鐘舵侊紝浠ヤ嬌浣犵殑紼嬪簭鑳芥紜傚綋鍦扮戶緇繍琛屻傝娓呴櫎閿欒鐘舵侊紝闇浣跨敤clear()鍑芥暟銆? 姝ゅ嚱鏁板甫涓涓弬鏁幫紝瀹冩槸浣犲皢瑕佽涓哄綋鍓嶇姸鎬佺殑鏍囧織鍊箋傦紝鍙灝唅os::goodbit浣滀負瀹炲弬銆?
銆銆紺轟緥浠g爜濡備笅錛?%CODE{"cpp"}% #include
int main() { int a; cin>>a; cout<<cin.rdstate()<<endl; cin.clear(ios::goodbit); cout<<cin.rdstate()<<endl; system("pause"); } %ENDCODE% 閫氬父褰撴垜浠彂鐜拌緭鍏ユ湁閿欏張闇瑕佹敼姝g殑鏃跺欙紝浣跨敤clear()鏇存敼鏍囪涓烘紜悗錛屽悓鏃朵篃闇瑕佷嬌鐢╣et()鎴愬憳鍑芥暟娓呴櫎杈撳叆緙撳啿鍖猴紝浠ヨ揪鍒伴噸澶嶈緭鍏ョ殑鐩? 鐨勩?
銆銆紺轟緥浠g爜濡備笅錛?%CODE{"cpp"}% #include
int main() { int a; while(1) { cin>>a;
if(cin)//鏉′歡鍙敼鍐欎負cin.fail() { cout<<"杈撳叆鏈夐敊!璇烽噸鏂拌緭鍏?<<endl;
cin.clear(); cin.get(); } else { cout<<a; break; } }
system("pause"); } %ENDCODE% 銆銆鏈鍚庡啀緇欏嚭涓涓鏂囦歡嫻侀敊璇爣璁板鐞嗙殑渚嬪瓙錛屽琺鍥哄涔狅紝浠g爜濡備笅錛?
%CODE{"cpp"}% #include
int main() { ifstream myfile("c:\\1.txt",ios_base::in,0); if(myfile.fail()) { cout<<"鏂囦歡璇誨彇澶辮觸鎴栨寚瀹氭枃浠朵笉瀛樺湪!"<<endl; } else { char ch; while(myfile.get(ch)) { cout<<ch; } if(myfile.eof()) { cout<<"鏂囦歡鍐呭宸茬粡鍏ㄩ儴璇誨畬"<<endl; } while(myfile.get(ch)) { cout<<ch; } } system("pause"); } %ENDCODE%
瀵硅繖浜涚被鐨勪竴涓璞℃墍鍋氱殑絎竴涓搷浣滈氬父灝辨槸灝嗗畠鍜屼竴涓湡姝g殑鏂囦歡鑱旂郴璧鋒潵錛屼篃灝辨槸璇存墦寮涓涓枃浠躲傝鎵撳紑鐨勬枃浠跺湪紼嬪簭涓敱涓涓祦瀵硅薄 (stream object)鏉ヨ〃紺?(榪欎簺綾葷殑涓涓疄渚? 錛岃屽榪欎釜嫻佸璞℃墍鍋氱殑浠諱綍杈撳叆杈撳嚭鎿嶄綔瀹為檯灝辨槸瀵硅鏂囦歡鎵鍋氱殑鎿嶄綔銆?/p>
瑕侀氳繃涓涓祦瀵硅薄鎵撳紑涓涓枃浠訛紝鎴戜滑浣跨敤瀹冪殑鎴愬憳鍑芥暟open()錛?/p>
void open (const char * filename, openmode
mode);
榪欓噷filename 鏄竴涓瓧絎︿覆錛屼唬琛ㄨ鎵撳紑鐨勬枃浠跺悕錛宮ode 鏄互涓嬫爣蹇楃鐨勪竴涓粍鍚堬細
ios::in | 涓鴻緭鍏?璇?鑰屾墦寮 鏂囦歡 |
ios::out | 涓鴻緭鍑?鍐?鑰屾墦寮 鏂囦歡 |
ios::ate | 鍒濆浣嶇疆錛氭枃浠跺熬 |
ios::app | 鎵鏈夎緭鍑洪檮鍔犲湪鏂囦歡 鏈熬 |
ios::trunc | 濡傛灉鏂囦歡宸插瓨鍦ㄥ垯鍏? 鍒犻櫎璇ユ枃浠?/td> |
ios::binary | 浜岃繘鍒舵柟寮?/td> |
榪欎簺鏍囪瘑絎﹀彲浠ヨ緇勫悎浣跨敤錛屼腑闂翠互”鎴?#8221;鎿嶄綔絎?|)闂撮殧銆備緥濡傦紝濡傛灉鎴戜滑鎯寵浠ヤ簩榪涘埗鏂瑰紡鎵撳紑鏂囦歡”example.bin” 鏉ュ啓鍏ヤ竴浜涙暟鎹紝鎴戜滑鍙互閫氳繃浠ヤ笅鏂瑰紡璋冪敤鎴愬憳鍑芥暟open錛堬級鏉ュ疄鐜幫細
ofstream file;
ofstream,
ifstream 鍜?fstream鎵鏈夎繖浜涚被鐨勬垚鍛樺嚱鏁皁pen 閮藉寘鍚簡涓涓粯璁ゆ墦寮鏂囦歡鐨勬柟寮忥紝榪欎笁涓被鐨勯粯璁ゆ柟寮忓悇涓嶇浉鍚岋細
file.open
("example.bin", ios::out | ios::app | ios::binary);
綾?/th> | 鍙傛暟鐨勯粯璁ゆ柟寮?/th> |
---|---|
ofstream | ios::out | ios::trunc |
ifstream | ios::in |
fstream | ios::in | ios::out |
鍙湁褰撳嚱鏁拌璋冪敤鏃舵病鏈夊0鏄庢柟寮忓弬鏁扮殑鎯呭喌涓嬶紝榛樿鍊兼墠浼氳閲囩敤銆傚鏋滃嚱鏁拌璋冪敤鏃跺0鏄庝簡浠諱綍鍙傛暟錛岄粯璁ゅ煎皢琚畬鍏ㄦ敼鍐欙紝鑰屼笉浼氫笌璋冪敤鍙傛暟緇勫悎銆?/p>
鐢變簬瀵圭被ofstream, ifstream 鍜?fstream 鐨勫璞℃墍榪涜鐨勭涓涓搷浣滈氬父閮芥槸鎵撳紑鏂囦歡錛岃繖浜涚被閮芥湁涓涓瀯閫犲嚱鏁板彲浠ョ洿鎺ヨ皟鐢╫pen 鍑芥暟錛屽茍鎷ユ湁鍚屾牱鐨勫弬鏁般傝繖鏍鳳紝鎴戜滑灝卞彲浠ラ氳繃浠ヤ笅鏂瑰紡榪涜涓庝笂闈㈠悓鏍風殑瀹氫箟瀵硅薄鍜屾墦寮鏂囦歡鐨勬搷浣滐細
ofstream file ("example.bin", ios::out |
ios::app | ios::binary);
涓ょ鎵撳紑鏂囦歡鐨勬柟寮忛兘鏄紜殑銆?/p>
浣犲彲浠ラ氳繃璋冪敤鎴愬憳鍑芥暟is_open()鏉ユ鏌ヤ竴涓枃浠舵槸鍚﹀凡緇忚欏哄埄鐨勬墦寮浜嗭細
bool is_open();
瀹冭繑鍥炰竴涓竷?yōu)?bool)
鍊鹼紝涓虹湡錛坱rue錛変唬琛ㄦ枃浠跺凡緇忚欏哄埄鎵撳紑錛屽亣( false )鍒欑浉鍙嶃?/p>
褰撴枃浠惰鍐欐搷浣滃畬鎴愪箣鍚庯紝鎴戜滑蹇呴』灝嗘枃浠跺叧闂互浣挎枃浠墮噸鏂板彉涓哄彲璁塊棶鐨勩傚叧闂枃浠墮渶瑕佽皟鐢ㄦ垚鍛樺嚱鏁癱lose()錛屽畠璐熻矗灝嗙紦瀛樹腑鐨勬暟鎹帓鏀懼嚭鏉ュ茍 鍏抽棴鏂囦歡銆傚畠鐨勬牸寮忓緢綆鍗曪細
void close ();
榪欎釜鍑芥暟涓鏃﹁璋冪敤錛屽師鍏堢殑嫻?
瀵硅薄(stream object)灝卞彲浠ヨ鐢ㄦ潵鎵撳紑鍏跺畠鐨勬枃浠朵簡錛岃繖涓枃浠朵篃灝卞彲浠ラ噸鏂拌鍏跺畠鐨勮繘紼?process)鎵鏈夎闂簡銆?/p>
涓洪槻姝㈡祦瀵硅薄琚攢姣佹椂榪樿仈緋葷潃鎵撳紑鐨勬枃浠訛紝鏋愭瀯鍑芥暟(destructor)灝嗕細鑷姩璋冪敤鍏抽棴鍑芥暟close銆?/p>
綾籵fstream, ifstream 鍜宖stream 鏄垎鍒粠ostream, istream 鍜宨ostream 涓紩鐢寵屾潵鐨勩傝繖灝辨槸涓轟粈涔?fstream 鐨勫璞″彲浠ヤ嬌鐢ㄥ叾鐖剁被鐨勬垚鍛樻潵璁塊棶鏁版嵁銆?/p>
涓鑸潵璇達紝鎴戜滑灝嗕嬌鐢ㄨ繖浜涚被涓庡悓鎺у埗鍙?console)浜や簰鍚屾牱鐨勬垚鍛樺嚱鏁?cin 鍜? cout)鏉ヨ繘琛岃緭鍏ヨ緭鍑恒傚涓嬮潰鐨勪緥棰樻墍紺猴紝鎴戜滑浣跨敤閲嶈澆鐨勬彃鍏ユ搷浣滅<<錛?/p>
// writing on a text file #include <fiostream.h>int main () { ofstream examplefile (”example.txt”); if (examplefile.is_open()) { examplefile << “This is a line.\n”; examplefile << “This is another line.\n”; examplefile.close(); } return 0; } |
file example.txt This is a line. This is another line. |
浠庢枃浠朵腑璇誨叆鏁版嵁涔熷彲浠ョ敤涓?cin鐨勪嬌鐢ㄥ悓鏍風殑鏂規(guī)硶錛?/p>
// reading a text file #include <iostream.h> #include <fstream.h> #include <stdlib.h>int main () { char buffer[256]; ifstream examplefile (”example.txt”); if (! examplefile.is_open()) { cout << “Error opening file”; exit (1); } while (! examplefile.eof() ) { examplefile.getline (buffer,100); cout << buffer << endl; } return 0; } |
This is a
line. This is another line. |
涓婇潰鐨勪緥瀛愯鍏ヤ竴涓枃鏈枃浠剁殑鍐呭錛岀劧鍚庡皢瀹冩墦鍗板埌灞忓箷涓娿傛敞鎰忔垜浠嬌鐢ㄤ簡涓涓柊鐨勬垚鍛樺嚱鏁板彨鍋歟of 錛屽畠鏄痠fstream 浠庣被 ios 涓戶鎵胯繃鏉ョ殑錛屽綋鍒拌揪鏂囦歡鏈熬鏃惰繑鍥瀟rue 銆?/p>
闄や簡eof()浠ュ錛岃繕鏈変竴浜涢獙璇佹祦鐨勭姸鎬佺殑鎴愬憳鍑芥暟錛堟墍鏈夐兘榪斿洖bool鍨嬭繑鍥炲鹼級錛?/p>
瑕佹兂閲嶇疆浠ヤ笂鎴愬憳鍑芥暟鎵媯鏌ョ殑鐘舵佹爣蹇楋紝浣犲彲浠ヤ嬌鐢ㄦ垚鍛樺嚱鏁癱lear()錛屾病鏈夊弬鏁般?/p>
鎵鏈夎緭鍏?杈撳嚭嫻佸璞?i/o streams objects)閮芥湁鑷沖皯涓涓祦鎸囬拡錛?/p>
鎴戜滑鍙互閫氳繃浣跨敤浠ヤ笅鎴愬憳鍑芥暟鏉ヨ鍑烘垨閰嶇疆榪欎簺鎸囧悜嫻佷腑璇誨啓浣嶇疆鐨勬祦鎸囬拡錛?/p>
seekg ( pos_type position );
seekp ( pos_type
position );
浣跨敤榪欎釜鍘熷瀷錛屾祦鎸囬拡琚敼鍙樹負鎸囧悜浠庢枃浠跺紑濮嬭綆楃殑涓涓粷瀵逛綅緗傝姹備紶鍏ョ殑鍙傛暟綾誨瀷涓庡嚱鏁?tellg 鍜宼ellp 鐨勮繑鍥炲肩被鍨嬬浉鍚屻?/p>
seekg ( off_type offset, seekdir direction );
seekp
( off_type offset, seekdir direction );
浣跨敤榪欎釜鍘熷瀷鍙互鎸囧畾鐢卞弬鏁癲irection鍐沖畾鐨勪竴涓叿浣撶殑鎸囬拡寮濮嬭綆楃殑涓涓綅縐?offset)銆傚畠鍙互鏄細
ios::beg | 浠庢祦寮濮嬩綅 緗綆楃殑浣嶇Щ |
ios::cur | 浠庢祦鎸囬拡褰? 鍓嶄綅緗紑濮嬭綆楃殑浣嶇Щ |
ios::end | 浠庢祦鏈熬澶? 寮濮嬭綆楃殑浣嶇Щ |
嫻?鎸囬拡 get 鍜?put 鐨勫煎鏂囨湰鏂囦歡(text file)鍜屼簩榪涘埗鏂囦歡(binary file)鐨勮綆楁柟娉曢兘鏄笉鍚岀殑錛屽洜涓烘枃鏈ā寮忕殑鏂囦歡涓煇浜涚壒孌婂瓧絎﹀彲鑳借淇敼銆傜敱浜庤繖涓師鍥狅紝寤鴻瀵逛互鏂囨湰鏂囦歡妯″紡鎵撳紑鐨勬枃浠舵繪槸浣跨敤seekg 鍜? seekp鐨勭涓縐嶅師鍨嬶紝鑰屼笖涓嶈瀵箃ellg 鎴?tellp 鐨勮繑鍥炲艱繘琛屼慨鏀廣傚浜岃繘鍒舵枃浠訛紝浣犲彲浠ヤ換鎰忎嬌鐢ㄨ繖浜涘嚱鏁幫紝搴旇涓嶄細鏈変換浣曟剰澶栫殑琛屼負浜х敓銆?/p>
浠ヤ笅渚嬪瓙浣跨敤榪欎簺鍑芥暟鏉ヨ幏寰椾竴涓簩榪涘埗鏂囦歡鐨勫ぇ灝忥細
// obtaining file size #include <iostream.h> #include <fstream.h>const char * filename = “example.txt”;int main () { long l,m; ifstream file (filename, ios::in|ios::binary); l = file.tellg(); file.seekg (0, ios::end); m = file.tellg(); file.close(); cout << “size of ” << filename; cout << ” is ” << (m-l) << ” bytes.\n”; return 0; } |
size of
example.txt is 40 bytes. |
鍦ㄤ簩榪涘埗鏂囦歡涓紝浣跨敤<< 鍜?gt;>錛屼互鍙婂嚱鏁幫紙濡俫etline錛夋潵鎿嶄綔絎﹁緭鍏ュ拰杈撳嚭鏁版嵁錛屾病鏈変粈涔堝疄闄呮剰涔夛紝铏界劧瀹冧滑鏄鍚堣娉曠殑銆?/p>
鏂?浠舵祦鍖呮嫭涓や釜涓洪『搴忚鍐欐暟鎹壒孌婅璁$殑鎴愬憳鍑芥暟錛歸rite 鍜?read銆傜涓涓嚱鏁?(write) 鏄痮stream 鐨勪竴涓垚鍛樺嚱鏁幫紝閮芥槸琚玱fstream鎵緇ф壙銆傝宺ead 鏄痠stream 鐨勪竴涓垚鍛樺嚱鏁幫紝琚玦fstream 鎵緇ф壙銆傜被 fstream 鐨勫璞″悓鏃舵嫢鏈夎繖涓や釜鍑芥暟銆傚畠浠殑鍘熷瀷鏄細
write ( char * buffer, streamsize size );
read (
char * buffer, streamsize size );
榪欓噷 buffer 鏄竴鍧楀唴瀛樼殑鍦板潃錛岀敤鏉ュ瓨鍌ㄦ垨璇誨嚭鏁版嵁銆傚弬鏁皊ize 鏄竴涓暣鏁板鹼紝琛ㄧず瑕佷粠緙撳瓨錛坆uffer錛変腑璇誨嚭鎴栧啓鍏ョ殑瀛楃鏁般?/p>
// reading binary file #include <iostream> #include <fstream.h>const char * filename = “example.txt”;int main () { char * buffer; long size; ifstream file (filename, ios::in|ios::binary|ios::ate); size = file.tellg(); file.seekg (0, ios::beg); buffer = new char [size]; file.read (buffer, size); file.close();cout << “the complete file is in a buffer”;delete[] buffer; return 0; } |
The
complete file is in a buffer |
褰?鎴戜滑瀵規(guī)枃浠舵祦榪涜鎿嶄綔鐨勬椂鍊欙紝瀹冧滑涓庝竴涓猻treambuf 綾誨瀷鐨勭紦瀛?buffer)鑱旂郴鍦ㄤ竴璧楓傝繖涓紦瀛橈紙buffer錛夊疄闄呮槸涓鍧楀唴瀛樼┖闂達紝浣滀負嫻?stream)鍜岀墿鐞嗘枃浠剁殑濯掍粙銆備緥濡傦紝瀵逛簬涓涓緭鍑烘祦錛? 姣忔鎴愬憳鍑芥暟put (鍐欎竴涓崟涓瓧絎?琚皟鐢紝榪欎釜瀛楃涓嶆槸鐩存帴琚啓鍏ヨ杈撳嚭嫻佹墍瀵瑰簲鐨勭墿鐞嗘枃浠朵腑鐨勶紝鑰屾槸棣栧厛琚彃鍏ュ埌璇ユ祦鐨勭紦瀛橈紙buffer錛変腑銆?/p>
褰撶紦瀛樿鎺掓斁鍑烘潵(flush)鏃訛紝瀹冮噷闈㈢殑鎵鏈夋暟鎹垨鑰呰鍐欏叆鐗╃悊濯掕川涓紙濡傛灉鏄竴涓緭鍑烘祦鐨勮瘽錛夛紝鎴栬呯畝鍗曠殑琚姽鎺?濡傛灉鏄竴涓緭鍏ユ祦鐨勮瘽)銆? 榪欎釜榪囩▼縐頒負鍚屾(synchronization)錛屽畠浼氬湪浠ヤ笅浠諱竴鎯呭喌涓嬪彂鐢燂細