知道流的概念,會使用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 ...