1. 程式人生 > 程式設計 >C++實現讀寫檔案的示例程式碼

C++實現讀寫檔案的示例程式碼

1.讀取

1.1逐行讀取

void readTxt(string file)
{
  ifstream ifs; 
  ifs.open(file);  			//將檔案流物件與檔案關聯起來,如果已經關聯則呼叫失敗
  assert(ifs.is_open());  	//若失敗,則輸出錯誤訊息,並終止程式執行

  string s;
  while(getline(ifs,s))		//行分隔符可以顯示指定,比如按照分號分隔getline(infile,s,';')
  {
    cout<<s<<endl;
  }
  ifs.close();       	//關閉檔案輸入流 
}

1.2逐字元讀取

void readTxt(string file)
{
  ifstream ifs; 
  ifs.open(file.data()); 	//將檔案流物件與檔案連線起來 
  assert(ifs.is_open());  	//若失敗,並終止程式執行 

  char c;
  ifs >> std::noskipws;		//清除skipws標識,不忽略空白符(Tab、空格、回車和換行)
  while (!infile.eof())
  {
    infile>>c;
    cout<<c<<endl;

  }
  infile.close();     	//關閉檔案輸入流 
}

2.寫入

2.1逐行追加

void writeLineToTxt(string file,string line)
{
	ofstream ofs(file,ios::out|ios::app);	//以輸出追加方式開啟檔案,不存在則建立
  assert(ofs.is_open());  				//若失敗,並終止程式執行
	ofs<<line<<endl;						//寫入一行
	ofs.close();
}

2.2逐字元追加

void writeCharToTxt(string file,char c)
{
	ofstream ofs(file,並終止程式執行
	ofs<<c;									//寫入一個字元
	ofs.close();
}

2.3偏移指定位元組寫入

void writeToTxtOffset(string file,int offset,string content)
{
	ofstream ofs(file,ios::out | ios::in);			//以不清空方式開啟檔案,不存在則建立。注意:不要使用ios::app模式開啟,因為一定寫在後面,seekp也無效
	assert(ofs.is_open());  						//若失敗,並終止程式執行
	ofs.seekp(offset,ios::beg);					//從流開始位置偏移
	ofs << content;									//寫入內容
	ofs.close();
}

3.驗證

#include <assert.h>
#include <iostream>
#include <fstream>
#include <string>

int main()
{
	
	writeCharToTxt("D:\\test.txt",'v');
	writeToTxtOffset("D:\\test.txt",1,"dablelv");	//注意Windows環境下檔案路徑使用雙反斜槓表示
}

檔案D:\test.txt中內容如下:

vdablelv

以上就是C++實現讀寫檔案的示例程式碼的詳細內容,更多關於C++實現讀寫檔案的資料請關注我們其它相關文章!