一堆規則,沒有什麼特別說明的。不過流都是有緩沖區的,這點要記住了。如果不刷新緩沖區或者關閉文件,數據內容可能不會進入文件。
流 數據的封裝
數據緩沖
流和緩沖區
streambuf 類管理緩沖區,提供填充,清空,刷新,處理緩沖區的功能 ios 輸出和輸入的基礎類,它有一個成員變量為streambuf istream和ostream 從ios派生專門管理輸入輸出行為 iostream從istream 和ostream派生,處理屏幕輸出 fstream 處理文件的輸入和輸出
標准io對象
cin cout cerr clog
流的簡單操作,比較瑣碎,簡單的明白即可,需要的時候取查閱手冊
cout << xxx; cin >> xxx;
簡單的文件讀寫
ios:app 附加到文件的末尾 ios:ate 調到文件的末尾但是可以在文件的任何地方寫入數據 ios:trunc 刪除已有的文件的內容 ios:nocreate 如果文件不存在,打開操作失敗 ios:noreplace 如果文件以及存在 打開操作失敗 ios::binary
二進制文件讀寫
見代碼
// // main.cpp // use_stream // // Created by bikang on 16/11/1. // Copyright (c) 2016年 bikang. All rights reserved. // #include#include using namespace std; void tstream(int argc, const char * argv[]); void tcin(); int main(int argc, const char * argv[]) { //tcin(); tstream(argc,argv); return 0; } void tcin(){ int mInt; cin >> mInt; cout << mInt; } void tstream(int argc, const char * argv[]){ //簡單的文件多謝 cout << "tstream"<< endl; string filename = "test123.log"; ofstream fout(filename); if(fout){ fout << "line go go"<< endl; fout << "567"<< endl; fout << "234"<< endl; fout.close(); } char buf[4096]; ifstream fin(filename); if(fin){ while(!fin.eof()){ fin.getline(buf, 4096); cout << buf << endl; } } fstream fp(filename,ios::app); if(fp){ fp << "dd"; fp.close(); } //二進制數據 ofstream fout2(filename,ios::binary|ios::app); if(fout2){ fout2.write("hello", 6); fout2.close(); } ifstream fin2(filename,ios::binary); if(fin2){ while (!fin2.eof()) { fin2.read(buf,4096); cout << buf; } fin2.close(); } //命令行 cout << endl; for(int i=0;i