c++學習練習
之檔案操作
程式執行時產生的資料都屬於臨時資料,程式一旦執行結束,都會被釋放。
通過檔案可以將資料持久化。
c++中對檔案操作需要包含標頭檔案 < fstream >
檔案型別分為兩種:
操作檔案的三大類:
1、ofstream 寫操作二、二進位制檔案2、ifstream 讀操作
3、fstream 讀寫操作
三、學習資源
寫檔案步驟:
1、包含標頭檔案 : < fstream>檔案開啟方式:2、建立流物件 : ofstream ofs;
3、開啟檔案 : ofs.open(「檔案路徑」,開啟方式);
4、寫資料 : ofs << 「寫入的資料」;
5、關閉檔案: ofs.close();
開啟方式
解釋ios::in
為讀檔案而開啟檔案
ios::out
為寫檔案而開啟檔案
ios::ate
初始位置:檔案尾
追加方式寫檔案
ios::trunc
如果檔案存在,先刪除,再建立
ios::binary
二進位制方式
注意:檔案開啟方式可以配合使用,利用 | 操作符。
例如:用二進位制方式寫檔案:』 ios::out | ios::binary 』
**如下:
#include
using
namespace std;
#include
//文字檔案 寫檔案
void
test01()
intmain()
其中, ofs.open(「data.txt」,ios::out); 如果檔案路徑可以是絕對路徑和相對路徑,這裡用的是相對路徑,執行完畢後,會在該**路徑下建立乙個 data.txt 檔案。
讀檔案步驟:
1、包含標頭檔案 : < fstream>**如下:2、建立流物件 : ifstream ifs;
3、開啟檔案並判斷檔案是否開啟成功 : ifs.open(「檔案路徑」,開啟方式);
4、讀資料 : 四種方式讀取(**中體現)
5、關閉檔案: ofs.close();
#include
using
namespace std;
#include
#include
//文字檔案 讀檔案
void
test01()
//4、讀資料
//第一種
// char buff[1024] = ;
// while (ifs >> buff)
//第二種
// char buff[1024] = ;
// while (ifs.getline(buff,sizeof(buff)))
//第三種
// string buff;
// while(getline(ifs,buff))
//第四種
char c;
while
((c = ifs.
get())
!=eof
)//5、關閉檔案
ifs.
close()
;}intmain()
讀檔案的方式:
第一種:建立乙個字元陣列,初始化全為0.然後在while迴圈裡將ifs中的資料利用右移運算子(<> buff)一行一行讀到頭之後會返回乙個假的資訊,結束迴圈。最後輸出buff。
第二種:同樣建立字元陣列。利用ifs中的成員函式 ifs.getline(buff,sizeof(buff))1一行一行獲取資料存入到buff中。
第三種:利用string容器儲存ifs的資料,利用全域性函式getline(ifs,buff)2,將資料儲存到buff中。
第四種:建立乙個字元c,通過ifs中的get()方法,把字元讀到c中,通過二進位制方式寫檔案主要利用流物件呼叫成員函式write((c = ifs.get()) != eof) 判斷有沒有讀到沒見尾,然後,輸出c
函式原型:
ostream& write(const char * buffer,int len);**如下:引數解釋:字元指標buffer指向記憶體中一段儲存空間,len是讀寫的位元組數
#include
using
namespace std;
#include
//二進位制檔案 寫檔案
class
person
;void
test01()
; ofs.
write((
const
char*)
&p,sizeof
(person));
//5、關閉檔案
ofs.
close()
;}intmain()
二進位制方式寫檔案主要利用流物件呼叫成員函式read
函式原型:
istream& read(const char * buffer,int len);**如下:引數解釋:字元指標buffer指向記憶體中一段儲存空間,len是讀寫的位元組數
#include
using
namespace std;
#include
//二進位制檔案 讀檔案
class
person
;void
test01()
// 4、讀資料
person p;
ifs.
read((
char*)
&p,sizeof
(person));
cout <<
"姓名:"
<< p.m_name <<
" 年齡:"
<< p.m_age << endl;
//5、關閉檔案
ifs.
close()
;}intmain()
學習資源
成員函式getline(char* _str,std::streamsize_count) ↩︎
全域性函式getline(basic_istream<_chart _traits>& __is,
basic_string<_chart _traits _alloc>& __str)
說白了第乙個引數就是輸入流,第二個引數就是準備好的字串。 ↩︎
C語言學習 練習
1.100 200之間的素數怎麼判斷?includeint main if j i printf n return 0 2.求兩個數的最大公約數,最小公倍數?includeint main printf 最大公約數為 d n b printf 最小公倍數為 d n m n b 最小公倍數 兩個數的乘...
python學習練習
1.猜數字遊戲 d python coding utf 8 2019 4 14 10 29 n 1tuichu 1 import random print 20,讓我們一起來玩遊戲吧 20,sep n end n rnum random.randint 1,100 while 1 1 num int...
C語言學習 練習2
1 在字元陣列中指定開始位置插入字串 include include include int main char b 32 int i,j,num printf please input.n scanf s d s a,num,b for i 0 i strlen a num 1 i for j 0...