C++的文件讀寫

C++的文件讀寫我經常使用的有兩種方式

1.基於C語言的文件讀寫函數

fread()和fwrite()

例子程序:

把一個txt文本中的內容讀入 一個std::string 中

char *file_name = "file.txt";
char buf[ 1024 ]  = "";
string source;

FILE * fin ;
if(fopen_s(&fin , file_name , "r"))
{
	cout << "找不到" << file_name << endl;
}
while(true)
{
	unsigned int size = fread(buf , 1 , 1024 , fin);
	if(1024 > size )
	{
		buf[size] = '\0';
		source.append(buf , 0 , 1024 );
		break;
	}
	source.append(buf , 0 , 1024);
}
fclose(fin);

 

寫入文件與讀取文件類似

fopen_s(&fout , file_name , "a+");
fwrite(buf , 1  , 1024 , fout);

這裏需要注意的是,使用r方式打開文件,可能不能夠讀取到整個文件,這對於存儲運行期間數據程序來說就不行了,這個時候可以使用rb方式

fopen_s(&fin , file_name , "rb"))//讀

fopen_s(&fout , file_name , "ab+");//寫

另外,對於文件的操作 fseek 、 ftell這兩個函數,其中fseek可以講讀取的遊標指定到某個位置,ftell可以得到當前遊標的位置。詳見msdn

http://msdn.microsoft.com/en-us/library/75yw9bf3(vs.71).aspx

http://msdn.microsoft.com/en-us/library/0ys3hc0b(v=vs.71).aspx


2.基於C++的流讀取方式

這就需要用到C++標準庫 fstream了

其他簡單的讀取寫入就不多介紹了,這個庫好用的地方在於可以讀取結構化的數據

如一個文本文件input.txt存儲了以下

張三 19 男 河北石家莊

李四 20 男 河南鄭州

小紅 19 女 廣東廣州

則可以用ifstream直接讀取,如下

ifstream fin("input.txt");
char line[64] = {0};
string name;
string age;
string sex;
string home;

while(fin.getline(line , sizeof(line)))
{
	stringstream ss(line);
	ss >> name;
	ss >> age;
	ss >> sex;
	ss >> home;

	cout << name << " " << age << " " << sex << " " <<< home << endl;
}


fin.close();


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章