C++文件讀寫操作詳解
一、讀寫文本文件
1.1 寫文件
寫文件步驟如下:
包含頭文件
#include <fstream>
創(chuàng)建流對(duì)象
ofstream ofs;
打開(kāi)文件
ofs.open("文件路徑",打開(kāi)方式);
寫數(shù)據(jù)
ofs << "寫入的數(shù)據(jù)";
關(guān)閉文件
ofs.close();
文件打開(kāi)方式:
| 打開(kāi)方式 | 解釋 |
|---|---|
| ios::in | 為讀文件而打開(kāi)文件 |
| ios::out | 為寫文件而打開(kāi)文件 |
| ios::ate | 初始位置:文件尾 |
| ios::app | 追加方式寫文件 |
| ios::trunc | 如果文件存在先刪除,再創(chuàng)建 |
| ios::binary | 二進(jìn)制方式 |
注意: 文件打開(kāi)方式可以配合使用,利用|操作符
例如:用二進(jìn)制方式寫文件 ios::binary | ios:: out
示例:
#include <fstream>
void test01()
{
ofstream ofs;
ofs.open("test.txt", ios::out);
ofs << "姓名:張三" << endl;
ofs << "性別:男" << endl;
ofs << "年齡:18" << endl;
ofs.close();
}
int main() {
test01();
system("pause");
return 0;
}總結(jié):
- 文件操作必須包含頭文件 fstream
- 讀文件可以利用 ofstream ,或者fstream類
- 打開(kāi)文件時(shí)候需要指定操作文件的路徑,以及打開(kāi)方式
- 利用 <<可以向文件中寫數(shù)據(jù)
- 操作完畢,要關(guān)閉文件
1.2讀文件
讀文件與寫文件步驟相似,但是讀取方式相對(duì)于比較多
讀文件步驟如下:
包含頭文件
#include <fstream>
創(chuàng)建流對(duì)象
ifstream ifs;
打開(kāi)文件并判斷文件是否打開(kāi)成功
ifs.open("文件路徑",打開(kāi)方式);
讀數(shù)據(jù)
四種方式讀取
關(guān)閉文件
ifs.close();
示例:
#include <fstream>
#include <string>
void test01()
{
ifstream ifs;
ifs.open("test.txt", ios::in);
if (!ifs.is_open())
{
cout << "文件打開(kāi)失敗" << endl;
return;
}
//第一種方式
//char buf[1024] = { 0 };
//while (ifs >> buf)
//{
// cout << buf << endl;
//}
//第二種
//char buf[1024] = { 0 };
//while (ifs.getline(buf,sizeof(buf)))
//{
// cout << buf << endl;
//}
//第三種
//string buf;
//while (getline(ifs, buf))
//{
// cout << buf << endl;
//}
char c;
while ((c = ifs.get()) != EOF)
{
cout << c;
}
ifs.close();
}
int main() {
test01();
system("pause");
return 0;
}總結(jié):
- 讀文件可以利用 ifstream ,或者fstream類
- 利用is_open函數(shù)可以判斷文件是否打開(kāi)成功
- close 關(guān)閉文件
二、讀寫二進(jìn)制文件
以二進(jìn)制的方式對(duì)文件進(jìn)行讀寫操作
打開(kāi)方式要指定為 ios::binary
2.1 寫文件
二進(jìn)制方式寫文件主要利用流對(duì)象調(diào)用成員函數(shù)write
函數(shù)原型 :ostream& write(const char * buffer,int len);
參數(shù)解釋:字符指針buffer指向內(nèi)存中一段存儲(chǔ)空間。len是讀寫的字節(jié)數(shù)
示例:
#include <fstream>
#include <string>
class Person
{
public:
char m_Name[64];
int m_Age;
};
//二進(jìn)制文件 寫文件
void test01()
{
//1、包含頭文件
//2、創(chuàng)建輸出流對(duì)象
ofstream ofs("person.txt", ios::out | ios::binary);
//3、打開(kāi)文件
//ofs.open("person.txt", ios::out | ios::binary);
Person p = {"張三" , 18};
//4、寫文件
ofs.write((const char *)&p, sizeof(p));
//5、關(guān)閉文件
ofs.close();
}
int main() {
test01();
system("pause");
return 0;
}總結(jié):
- 文件輸出流對(duì)象 可以通過(guò)write函數(shù),以二進(jìn)制方式寫數(shù)據(jù)
2.2 讀文件
二進(jìn)制方式讀文件主要利用流對(duì)象調(diào)用成員函數(shù)read
函數(shù)原型:istream& read(char *buffer,int len);
參數(shù)解釋:字符指針buffer指向內(nèi)存中一段存儲(chǔ)空間。len是讀寫的字節(jié)數(shù)
示例:
#include <fstream>
#include <string>
class Person
{
public:
char m_Name[64];
int m_Age;
};
void test01()
{
ifstream ifs("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打開(kāi)失敗" << endl;
}
Person p;
ifs.read((char *)&p, sizeof(p));
cout << "姓名: " << p.m_Name << " 年齡: " << p.m_Age << endl;
}
int main() {
test01();
system("pause");
return 0;
}文件輸入流對(duì)象 可以通過(guò)read函數(shù),以二進(jìn)制方式讀數(shù)據(jù)
到此這篇關(guān)于C++讀寫文件的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言break和continue的語(yǔ)句用法
這篇文章主要介紹了C語(yǔ)言break和continue的語(yǔ)句用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
linux c++ 服務(wù)器端開(kāi)發(fā)面試必看書(shū)籍整理
這篇文章主要介紹了linux c++ 服務(wù)器端開(kāi)發(fā)面試必看書(shū)籍整理,需要的朋友可以參考下2020-02-02
c語(yǔ)言中單引號(hào)和雙引號(hào)的區(qū)別(順利解決從字符串中提取IP地址的困惑)
c語(yǔ)言中的單引號(hào)和雙引號(hào)可是有很大區(qū)別的,使用之前一定要了解他們之間到底有什么不同,下面小編就給大家詳細(xì)的介紹一下吧,對(duì)此還不是很了解的朋友可以過(guò)來(lái)參考下2013-07-07
C++二叉樹(shù)實(shí)現(xiàn)詞頻分析功能
這篇文章主要為大家詳細(xì)介紹了C++二叉樹(shù)實(shí)現(xiàn)詞頻分析功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(文件操作)
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),增加了文件操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
C++編程產(chǎn)生指定范圍內(nèi)的隨機(jī)數(shù)
這篇文章主要為大家詳細(xì)介紹了C++編程產(chǎn)生指定范圍內(nèi)的隨機(jī)數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
C語(yǔ)言之棧和堆(Stack && Heap)的優(yōu)缺點(diǎn)及其使用區(qū)別
本篇文章主要介紹了什么是棧(Stack) 、什么是堆( Heap),以及棧和堆的優(yōu)缺點(diǎn),同時(shí)介紹了應(yīng)該什么時(shí)候使用堆和棧,有需要的朋友可以參考下2015-07-07
C++使用CRT庫(kù)檢測(cè)內(nèi)存泄漏的方法詳解
內(nèi)存泄漏是 C/C++ 應(yīng)用程序中最微妙、最難以發(fā)現(xiàn)的 bug,存泄漏是由于之前分配的內(nèi)存未能正確解除分配而導(dǎo)致的, 內(nèi)存泄漏的檢測(cè)工具有很多,CRT庫(kù),是Visual Studio 自帶的,所以我們可以開(kāi)箱即用,所以下面我們就來(lái)一起學(xué)習(xí)一下如何使用CRT庫(kù)檢測(cè)內(nèi)存泄漏2024-06-06
C++實(shí)現(xiàn)四則運(yùn)算器(帶括號(hào))
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)四則運(yùn)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11

