引用自:
i/o流的概念
當程式與外界環境進行資訊交換時,存在著兩個物件,乙個是程式中的物件,另乙個是檔案物件,流是一種抽象,它負責在資料的生產者和資料的消費者之間建立連線,並管理資料的流動。程式建立乙個流物件,並指定這個流物件與某個檔案物件建立連線,程式操作流物件,流物件通過檔案系統對所連線的檔案物件產生作用。讀操作在流資料抽象中被稱為提取,寫操作被稱為插入。
1、最重要的三個輸出流:ostream(),ofstream(),ostringstream().
預先定義的輸出流物件:cout標準輸出;cerr標準錯誤輸出,沒有緩衝,傳送給它的內容立即被輸出。clog類似於cerr,但是有緩衝,緩衝區滿時被輸出。
ofstream類支援磁碟檔案輸出
如果在建構函式中指定乙個檔名,當構造這個檔案時該檔案是自動開啟的
ofstreammyfile("filename",iosmode);
可以在呼叫預設建構函式之後使用open成員函式開啟檔案
ofstream myfile; //宣告乙個靜態輸出檔案流物件
myfile.open("filename",iosmode);
//開啟檔案,使流物件與檔案建立聯絡
ofstream* pmyfile = newofstream;
//建立乙個動態的輸出檔案流物件
pmyfile->open("filename",iosmode); //開啟檔案,使流物件與檔案建立聯絡
插入運算子<<:插入運算子是所有標準資料型別預先設計的,用於傳送位元組到乙個輸出流物件。
控制輸出格式
控制輸出寬度:setw操縱符或者呼叫width成員函式為每個項指定輸出寬度;
#include
using namespace std;
int main()
;……setw()
……char *names=;
for(inti=0;i<4;i++) ……
……}//輸出結果:
……******1.23
…… zoot
1.23
*****35.36
……jimmy
35.36
*****653.7
…… al
653.7
***4358.24
…… stan
4358.24
控制輸出精度和對齊格式setprecision和setiosflags(ios::left(right))
#include
#include
using namespace std;
int main()
; char*names = ;
for (inti=0;i<4;i++)
cout <
<
<
<< setw(10)
<< setprecision(1)
<< values[i]
<< endl;
}//輸出結果:
zoot
1jimmy
4e+001
al 7e+002
stan
4e+003
輸出檔案流成員函式:是與操作符等價的成員函式,執行非格式化寫操作的成員函式,其它修改流狀態且不同於操縱符或插入運算子的成員函式。
open函式把流與乙個特定的磁碟檔案關聯起來。需要指定開啟模式。
put函式把乙個字元寫到輸出流中。
write函式把記憶體中的一塊內容寫到乙個輸出檔案流中
seekp和tellp函式操作檔案流的內部指標
close函式關閉與乙個輸出檔案流關聯的磁碟檔案
錯誤處理函式在寫到乙個流時進行錯誤處理
#include//向檔案輸出
using namespace std;
struct date
;int main()
; ofstreamtfile("date.dat",ios_base::binary);//指定二進位制輸出,避免換行符的轉換。
tfile.write((char *) &dt,sizeofdt);//首先取dt位址並強制轉換為字元型別,作為首位址,且由此,寫入dt全部內容。
tfile.close();
}以通常方式構造乙個流,然後使用setmode成員函式,在檔案開啟後改變模式。
使用ofstream建構函式中的模式參量指定二進位制輸出模式
使用二進位制操作符代替setmode成員函式:ofs 在呼叫預設建構函式之後使用open函式來開啟檔案。
ifstream myfile;//建立乙個檔案流物件
myfile.open("filename",iosmode); //開啟檔案"filename"
提取運算子》。
open函式把該流與乙個特定磁碟檔案相關聯。
get函式與提取運算子(>>)很相像,主要的不同點是get函式在讀入資料時包括空白字元。
getline從輸入流中讀取多個字元,並且允許指定輸入終止字元,讀取完成後,從讀取內容中刪除終止字元。
read成員函式從乙個檔案讀位元組到乙個指定的記憶體區域,由長度引數確定要讀的位元組數。如果給出長度引數,當遇到檔案結束或者在文字模式檔案中遇到檔案結束標記字元時結束讀取。
seekg函式用來設定輸入檔案流中讀取資料位置的指標。
tellg函式返回當前檔案讀指標的位置。
close函式關閉與乙個輸入檔案流關聯的磁碟檔案。
//從檔案讀取二進位制記錄
#include
#include
#include
using namespace std;
int main()
employee1,employee2;
employee1.salary=8000;
strcpy(employee1.name, "l zheng");
ofstreamoutfile("payroll",ios_base::binary);
outfile.write((char *)&employee1,sizeof(employee1));
outfile.close();
ifstreamis("payroll",ios_base::binary);
if(is)
} else
tfile.close();
}cout << employee2.name<< ' '<< employee2.salary<< endl;
} else
is.close();
}//讀檔案並顯示其中空格的位置
#include
#include
using namespace std;
int main()
} else
cout << "error: cannot open file'payroll'." << endl;
tfile.close();
}
流類庫與輸入 輸出
流類庫與輸入 輸出 11 1 什麼叫做流?流的提取和插入是指什麼?i o流在c 中起著怎樣的作用?解 流是一種抽象,它負責在資料的生產者和資料的消費者之間建立聯絡,並管理資料的流動,一般意義下的讀操作在流資料抽象中被稱為 從流中 提取,寫操作被稱為 向流中 插入。作業系統是將鍵盤 螢幕 印表機和通訊...
流類庫與輸入輸出 二
如果建構函式或open成員函式開啟了該檔案,輸出流析構函式自動關閉乙個流的檔案。6 錯誤處理函式 錯誤處理成員函式的作用是在寫到乙個流時進行錯誤處理。各函式及其功能如下表所示。錯誤處理成員函式及其功能 函 數 功能及返回值 bad 如果出現乙個不可恢復的錯誤,則返回乙個非0值 fail 如果出現乙個...
c 流類庫與輸入輸出
c與c 輸入輸出對比 c中的printf函式只能輸出系統預定義的型別,而c 可以輸入輸出標準型別和自定義型別的資料。優點 可以防止格式控制符輸入輸出型別資料不一致的錯誤 可以通過過載的方式對自定義的資料進行輸入輸出。c 的輸入輸出流 流是指資料從乙個源流到乙個目的流,負責資料的源到目的的之間建立聯絡...