ios中對只有單個c?
在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎(chǔ)的,包括我們要認(rèn)識的文件I/O,stream這個類有兩個重要的運(yùn)算符: 1、插入器(>) 從流中輸入數(shù)據(jù)。比如說系統(tǒng)有一個默認(rèn)的標(biāo)準(zhǔn)輸入流(cin),一般情況下就是指的鍵盤,所以,cin>>x;就表示從標(biāo)準(zhǔn)輸入流中讀取一個指定類型(即變量x的類型)的數(shù)據(jù)。 在C++中,對文件的操作是通過stream的子類fstream(file stream)來實(shí)現(xiàn)的,所以,要用這種方式操作文件,就必須加入頭文件fstream.h。下面就把此類的文件操作過程一一道來。一、打開文件 在fstream類中,有一個成員函數(shù)open(),就是用來打開文件的,其原型是:void open(const char* filename,int mode,int access);參數(shù):filename: 要打開的文件名 mode: 要打開文件的方式 access: 打開文件的屬性打開文件的方式在類ios(是所有流式I/O類的基類)中定義,常用的值如下: ios::app: 以追加的方式打開文件ios::ate: 文件打開后定位到文件尾,ios:app就包含有此屬性ios::binary: 以二進(jìn)制方式打開文件,缺省的方式是文本方式。兩種方式的區(qū)別見前文ios::in: 文件以輸入方式打開(文件數(shù)據(jù)輸入到內(nèi)存)ios::out: 文件以輸出方式打開(內(nèi)存數(shù)據(jù)輸出到文件)ios::nocreate: 不建立文件,所以文件不存在時打開失敗ios::noreplace:不覆蓋文件,所以打開文件時如果文件存在失敗ios::trunc: 如果文件存在,把文件長度設(shè)為0 可以用“或”把以上屬性連接起來,如ios::out|ios::binary 打開文件的屬性取值是:0:普通文件,打開訪問 1:只讀文件 2:隱含文件 4:系統(tǒng)文件 可以用“或”或者“+”把以上屬性連接起來 ,如3或1|2就是以只讀和隱含屬性打開文件。 例如:以二進(jìn)制輸入方式打開文件c:\config.sys fstream file1;file1.open("c:\\config.sys",ios::binary|ios::in,0); 如果open函數(shù)只有文件名一個參數(shù),則是以讀/寫普通文件打開,即:file1.open("c:\\config.sys"); file1.open("c:\\config.sys",ios::in|ios::out,0); 另外,fstream還有和open()一樣的構(gòu)造函數(shù),對于上例,在定義的時侯就可以打開文件了:fstream file1("c:\\config.sys"); 特別提出的是,fstream有兩個子類:ifstream(input file stream)和ofstream(outpu file stream),ifstream默認(rèn)以輸入方式打開文件,而ofstream默認(rèn)以輸出方式打開文件。ifstream file2("c:\\pdos.def");//以輸入方式打開文件ofstream file3("c:\\x.123");//以輸出方式打開文件 所以,在實(shí)際應(yīng)用中,根據(jù)需要的不同,選擇不同的類來定義:如果想以輸入方式打開,就用ifstream來定義;如果想以輸出方式打開,就用ofstream來定義;如果想以輸入/輸出方式來打開,就用fstream來定義。二、關(guān)閉文件 打開的文件使用完成后一定要關(guān)閉,fstream提供了成員函數(shù)close()來完成此操作,如:file1.close();就把file1相連的文件關(guān)閉。三、讀寫文件 讀寫文件分為文本文件和二進(jìn)制文件的讀取,對于文本文件的讀取比較簡單,用插入器和析取器就可以了;而對于二進(jìn)制的讀取就要復(fù)雜些,下要就詳細(xì)的介紹這兩種方式 1、文本文件的讀寫 文本文件的讀寫很簡單:用插入器(>)從文件輸入。假設(shè)file1是以輸入方式打開,file2以輸出打開。示例如下: file2>i;//從文件輸入一個整數(shù)值。 這種方式還有一種簡單的格式化能力,比如可以指定輸出為16進(jìn)制等等,具體的格式有以下一些操縱符 功能 輸入/輸出 dec 格式化為十進(jìn)制數(shù)值數(shù)據(jù) 輸入和輸出 endl 輸出一個換行符并刷新此流 輸出 ends 輸出一個空字符 輸出 hex 格式化為十六進(jìn)制數(shù)值數(shù)據(jù) 輸入和輸出 oct 格式化為八進(jìn)制數(shù)值數(shù)據(jù) 輸入和輸出 setpxecision(int p) 設(shè)置浮點(diǎn)數(shù)的精度位數(shù) 輸出 比如要把123當(dāng)作十六進(jìn)制輸出:file1