IO流,檔案解包

2022-06-12 06:30:12 字數 4552 閱讀 2898

知道流的概念,會使用fstream來對檔案進行操作

1.流是一種抽象的概念,表示了資料的無結構化傳遞

2.c++流是指資訊從外部輸入裝置(如鍵盤)向計算機內部(如記憶體)輸入和從記憶體向外部輸出裝置(顯示器)輸出的過程

3.c++定義有了i/o標準類庫,用以完成流操作的功能

1.fstream是c++中常用的檔案操作類,用於檔案操作,和c語言學過的檔案操作的作用一樣

1.包含標頭檔案fstream,並開啟命名空間std或是std::fstream;

2.使用fstream類來例項化物件,通過物件的成員來進行檔案操作

1.open("檔名路徑",開啟方式)//開啟檔案

檔案路徑:絕對路徑,相對路徑

開啟方式:表示開啟檔案的模式,不同的模式對應不同的資料操作(唯讀,只寫,二進位制操作等)

2.close()

關閉檔案

3.is_open()

判斷檔案是否成功開啟,成功返回1,失敗返回0

4.eof()

判斷檔案是否到達檔案末尾,到了檔案末尾返回true,失敗返回false

//讀取整個文件

char str[1024] = ;

int i = 0;

fstream file("1.txt", ios::in);

while (!file.eof())//判斷檔案是否到達末尾,到了返回true,否則返回false

cout << str << endl;

5.put(字元)

往檔案中寫入乙個字元

#includefstream file;

file.open("1.txt",ios::out);

file.put('w');

char c='s';

file.put(c);

6.get()
//從檔案中讀取字元,有三種常用的形式

char ch;

file.get(ch);//讀取乙個字元,賦值給ch

ch=file.get();//讀取乙個字元,賦值給ch

get(char* str,int num,char delim='\n');//讀取num個字元,賦值給str,或在這個期間讀到'\n'結束

getline(char* str,int num,char delim='\n');//讀取num個字元,賦值給str,或在這個期間讀到了'\n'結束

get()和getline()的區別

都可以讀取多個字元,get會把檔案內遇到終結符留在輸入流,所以需要使用get將終結符扔掉。getline自動把輸入流中的終結符取消掉了,下次可以繼續直接讀取。讀一行字元時,一般使用getline

class myfstream :public fstream//可以自己新增功能

;int main()

; file >> str;//中間遇到空格就讀取完成

file.getline(str, 100, 'd');//讀取100個字元到str中(讀的只是一行),遇到d就停止,最後乙個參也可以不寫

cout << str << endl;

//讀取多行字元

char str[2][100] = ;

file.getline(str[0], 100);

file.getline(str[1], 100);

cout << str[0] << endl;

cout << str[1] << endl;

file.close();

system("pause");

return 0;

}

7.seekp()或seekg()
裡面存的是 abcde    

fstream file("1.txt", ios::in);

file.seekp(3, ios::cur);

cout << (char)file.get() << endl;//d

file.close();

檔案指標的移動

file.seekp(5,ios::beg);//從檔案開頭的位置往後偏移5個字元

在這裡,數字5,表示的是檔案指標往後移動5個位元組的位置,如果是-5,那麼就是往前移動5個位元組的位置

第二個引數是檔案指標從**移動位置,一共有三個:

ios::beg-->檔案開頭

ios::end-->檔案末尾

ios::cur-->檔案指標當前的位置

8.tellg()或tellp()

獲取檔案指標的移動大小,檔案指標可以移動

int len = file.tellg();//獲取檔案指標移動了多少

的大小是33016位元組

fstream file("2.png", ios::binary|ios::in);

file.seekp(0, ios::end);

int size = file.tellp();

cout << size << endl;//33016

file.close();

9.二進位制形式讀寫檔案
//寫入乙個數字

int a = 10;

fstream file("1.txt", ios::binary | ios::out);//以二進位制方式開啟檔案,若不指定此模式,則以文字模式開啟。再用於寫入資料

//讀出乙個數字

file.write((const char*)(&a), sizeof(int));//寫入檔案

int a;

fstream file("1.txt", ios::binary | ios::in);

file.read((char*)&a, sizeof(int));

cout << a << endl;

//乙個數字,異或同乙個數兩次,會得到它本身 45^98^98=45

//寫入字串

fstream file("1.txt", ios::binary | ios::out);

int b = 0;

char str[100] = "adjddss";

b = strlen(str);

file.write((const char*)(&b), sizeof(int));

file.write(str, b);

int b = 0;

char str[100] = ;

fstream file("1.txt", ios::binary | ios::in);

file.read((char*)&b, sizeof(int));

cout << b << endl;

file.read(str, b);

cout << str << endl;

file.close();

write()寫入檔案
write(const char* str,int str_size);//寫入乙個整數

int a=10;

file.write((const char*)&a,sizeof(int));

read()讀取檔案
read(char* str,int str_size);//讀取乙個整數

int a;

file.read((char*)&a,sizeof(int));//讀取4個位元組的整數,賦值給a

寫入檔案
#include#includeusing namespace std;

/*檔案操作可以一邊讀一邊寫,但是不建議這樣做(檔案指標分不清)

讀寫分開進行

開啟方式要和操作方式一樣,以唯讀的方式開啟,那麼就唯讀,寫是不行的

*/int main()

1、使用運算子來進行檔案操作的優點類似於i/o流中的cin和cout,只不過cin和cout作用在記憶體,而fstream是作用在檔案

fstream file;

int x=666;

file.open("1.txt",ios::out);

file>temp;//從檔案中讀取

cout檔案 1.pack

#include#includeusing namespace std;

struct node

;int main()

; for (int i = 0; i < filesize; i++)

for (int i = 0; i < filesize; i++)

fstream filepng[6];

for (int i = 0; i < filesize; i++)

for (int i = 0; i < filesize; i++)

filepng[i].close();

} file.close();

system("pause");

return 0;

}

檔案與流I O

檔案的概念很簡單,就是資料的集合,一般儲存在磁碟或其他儲存介質上。流的概念顧名思義 從資料池或儲存裝置而來的流動或連續過程,可以在流的當前位置進行讀寫,或從流中的某一點跳到另一點。c 的檔案操作一般依靠以下幾個類 file,fileinfo,directory。流操作一般有 filestream,m...

IO流檔案讀寫

p1 開啟檔案 讀檔案 關閉檔案的典型方法 try f open d test.txt r print f.read finally if f f.close p2 推薦的簡潔寫法,不必顯示的關閉檔案描述符 open返回的物件在python中稱作file like 物件,可以是位元組流 網路流 自定...

I O流 檔案讀寫

流 流 即是流動的意思,是物質從一處向另一處流動的過程。c 流是指資訊從外部輸入裝置 鍵盤等 向計算機內部 如記憶體 輸入和從記憶體向外部輸出裝置 顯示器 輸出的過程。這種輸入輸出的過程被形象的成為 流 為了實現這種流動,c 定義了i o標準庫,這些每個類都成為流 流類,完成一些功能。define ...