流類庫與輸入/輸出
11-1 什麼叫做流?流的提取和插入是指什麼?i/o流在c++中起著怎樣的作用?
解: 流是一種抽象,它負責在資料的生產者和資料的消費者之間建立聯絡,並管理資料的流動,一般意義下的讀操作在流資料抽象中被稱為(從流中)提取,寫操作被稱為(向流中)插入。作業系統是將鍵盤、螢幕、印表機和通訊埠作為擴充檔案來處理的,i/o流類就是用來與這些擴充檔案進行互動,實現資料的輸入與輸出。
11-2 cerr和clog有何區別?
解: cerr 標準錯誤輸出,沒有緩衝,傳送給它的內容立即被輸出,適用於立即向螢幕輸出的錯誤資訊;clog 類似於cerr,但是有緩衝,緩衝區滿時被輸出,在向磁碟輸出時效率更高。
11-3 使用i/o流以文字方式建立乙個檔案test1.txt,寫入字元「已成功寫入檔案!」,用其它字處理程式(例如windows的記事本程式notepad)開啟,看看是否正確寫入。
解: #include
void main()
程式執行後test1.txt的內容為:已成功寫入檔案!
11-4 使用i/o流以文字方式開啟上一題建立的檔案test1.txt,讀出其內容顯示出來,看看是否正確。
解: #include
void main()
程式執行輸出:
已成功寫入檔案!
11-5 使用i/o流以文字方式開啟上題建立的檔案test1.txt,在次此檔案後面新增字元「已成功新增字元!」,然後讀出整個檔案的內容顯示出來,看看是否正確。
解: #include
}程式執行輸出:
已成功寫入檔案!已成功新增字元!
11-6 定義乙個dog類,包含體重和年齡兩個成員變數及相應的成員函式,宣告乙個例項dog1,體重為5,年齡為10,使用i/o流把dog1的狀態寫入磁碟檔案,再宣告另乙個例項dog2,通過讀檔案把dog1的狀態賦給dog2。分別使用文字方式和二進位制方式操作檔案,看看結果有何不同;再看看磁碟檔案的ascii碼有何不同。
解: 以兩種方式操作,程式執行結果一樣,但磁碟檔案的ascii碼不同,使用二進位制方式時,磁碟檔案的ascii碼為05 00 00 00 0a 00 00 00,使用文字方式時,磁碟檔案的ascii碼為05 00 00 00 0d 0a 00 00 00,這是因為此時系統自動把0a轉換為了0d 0a。
#include
class dog
~dog(){}
int getweight()const
void setweight(int weight)
long getdaysalive()const
void setdaysalive(long days)
private:
int itsweight;
long itsnumberdaysalive;
};int main() // returns 1 on error
dog dog1(5,10);
fout.write((char*) &dog1,sizeof dog1);
fout.close();
ifstream fin(filename);
// ifstream fin(filename,ios::binary);
if (!fin)
dog dog2(2,2);
cout << "dog2 weight: " << dog2.getweight() << endl;
cout << "dog2 days: " << dog2.getdaysalive() << endl;
fin.read((char*) &dog2, sizeof dog2);
cout << "dog2 weight: " << dog2.getweight() << endl;
cout << "dog2 days: " << dog2.getdaysalive() << endl;
fin.close();
return 0;
}程式執行輸出:
please enter the file name: a
dog2 weight: 2
dog2 days: 2
dog2 weight: 5
dog2 days: 10
11-7 觀察下面的程式,說明每條語句的作用,看看程式執行的結果。
#include
using namespace ::std;
void main()
解: //1儲存現在的格式化引數設定,以便將來恢復這些設定;
//2 把對齊方式由預設的右對齊改為左對齊;
//3 把輸出域的寬度由預設值0改為10;
//4 清除對齊方式的設定;
//5 更改浮點數的顯示設定;
//6 恢復原來的格式化引數設定。
程式執行輸出:
812|813 815
8.31e+02
11-8 提示使用者輸入乙個十進位制整數,分別用十進位制、八進位制和十六進製制形式輸出。
解: #include
void main()
程式執行輸出:
請輸入乙個十進位制整數:15
這個數的十進位制形式為:15
這個數的八進位制形式為:17
這個數的十六進製制形式為:f
解: //b.cpp
#include
#include
#include
void main(int argc, char* argv)
ofstream out(argv[1]);
const int bsz = 100;
char buf[bsz];
int line = 0;
while(textfile.getline(buf, bsz))
}編譯後執行程式b text1.txt
執行前text1.txt的內容為:
aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc
dddddddddddd
eeeeeeeeeeee
ffffffffffff
gggggggggggg
hhhhhhhhhhhh
執行後text1.txt的內容為:
1. aaaaaaaaaaaa
2. bbbbbbbbbbbb
3. cccccccccccc
4. dddddddddddd
5. eeeeeeeeeeee
6. ffffffffffff
7. gggggggggggg
8. hhhhhhhhhhhh
流類庫與輸入 輸出
引用自 i o流的概念 當程式與外界環境進行資訊交換時,存在著兩個物件,乙個是程式中的物件,另乙個是檔案物件,流是一種抽象,它負責在資料的生產者和資料的消費者之間建立連線,並管理資料的流動。程式建立乙個流物件,並指定這個流物件與某個檔案物件建立連線,程式操作流物件,流物件通過檔案系統對所連線的檔案物...
流類庫與輸入輸出 二
如果建構函式或open成員函式開啟了該檔案,輸出流析構函式自動關閉乙個流的檔案。6 錯誤處理函式 錯誤處理成員函式的作用是在寫到乙個流時進行錯誤處理。各函式及其功能如下表所示。錯誤處理成員函式及其功能 函 數 功能及返回值 bad 如果出現乙個不可恢復的錯誤,則返回乙個非0值 fail 如果出現乙個...
c 流類庫與輸入輸出
c與c 輸入輸出對比 c中的printf函式只能輸出系統預定義的型別,而c 可以輸入輸出標準型別和自定義型別的資料。優點 可以防止格式控制符輸入輸出型別資料不一致的錯誤 可以通過過載的方式對自定義的資料進行輸入輸出。c 的輸入輸出流 流是指資料從乙個源流到乙個目的流,負責資料的源到目的的之間建立聯絡...