欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++文件讀寫操作詳解

 更新時間:2022年04月27日 11:06:14   作者:農(nóng)碼一生  
本文詳細(xì)講解了C++讀寫文件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、讀寫文本文件

1.1 寫文件

寫文件步驟如下:

  • 包含頭文件

    #include <fstream>

  • 創(chuàng)建流對象

    ofstream ofs;

  • 打開文件

    ofs.open("文件路徑",打開方式);

  • 寫數(shù)據(jù)

    ofs << "寫入的數(shù)據(jù)";

  • 關(guān)閉文件

    ofs.close();

文件打開方式:

打開方式解釋
ios::in為讀文件而打開文件
ios::out為寫文件而打開文件
ios::ate初始位置:文件尾
ios::app追加方式寫文件
ios::trunc如果文件存在先刪除,再創(chuàng)建
ios::binary二進(jìn)制方式

注意: 文件打開方式可以配合使用,利用|操作符

例如:用二進(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類
  • 打開文件時候需要指定操作文件的路徑,以及打開方式
  • 利用 <<可以向文件中寫數(shù)據(jù)
  • 操作完畢,要關(guān)閉文件

1.2讀文件

讀文件與寫文件步驟相似,但是讀取方式相對于比較多

讀文件步驟如下:

  • 包含頭文件

    #include <fstream>

  • 創(chuàng)建流對象

    ifstream ifs;

  • 打開文件并判斷文件是否打開成功

    ifs.open("文件路徑",打開方式);

  • 讀數(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 << "文件打開失敗" << 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ù)可以判斷文件是否打開成功
  • close 關(guān)閉文件

二、讀寫二進(jìn)制文件

以二進(jìn)制的方式對文件進(jìn)行讀寫操作

打開方式要指定為 ios::binary

2.1 寫文件

二進(jìn)制方式寫文件主要利用流對象調(diào)用成員函數(shù)write

函數(shù)原型 :ostream& write(const char * buffer,int len);

參數(shù)解釋:字符指針buffer指向內(nèi)存中一段存儲空間。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)建輸出流對象
	ofstream ofs("person.txt", ios::out | ios::binary);
	
	//3、打開文件
	//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é):

  • 文件輸出流對象 可以通過write函數(shù),以二進(jìn)制方式寫數(shù)據(jù)

2.2 讀文件

二進(jìn)制方式讀文件主要利用流對象調(diào)用成員函數(shù)read

函數(shù)原型:istream& read(char *buffer,int len);

參數(shù)解釋:字符指針buffer指向內(nèi)存中一段存儲空間。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 << "文件打開失敗" << endl;
	}

	Person p;
	ifs.read((char *)&p, sizeof(p));

	cout << "姓名: " << p.m_Name << " 年齡: " << p.m_Age << endl;
}

int main() {

	test01();

	system("pause");

	return 0;
}

文件輸入流對象 可以通過read函數(shù),以二進(jìn)制方式讀數(shù)據(jù)

到此這篇關(guān)于C++讀寫文件的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言結(jié)構(gòu)體內(nèi)存對齊詳解

    C語言結(jié)構(gòu)體內(nèi)存對齊詳解

    大家好,本篇文章主要講的是C語言結(jié)構(gòu)體內(nèi)存對齊詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • VsCode搭建C語言運(yùn)行環(huán)境詳細(xì)過程及終端亂碼問題解決方案

    VsCode搭建C語言運(yùn)行環(huán)境詳細(xì)過程及終端亂碼問題解決方案

    這篇文章主要介紹了VsCode搭建C語言運(yùn)行環(huán)境以及終端亂碼問題解決,在VsCode中搭建C/C++運(yùn)行環(huán)境需要先安裝幾個插件,具體插件文中給大家詳細(xì)介紹,需要的朋友可以參考下
    2022-12-12
  • C語言中的結(jié)構(gòu)體快排算法

    C語言中的結(jié)構(gòu)體快排算法

    這篇文章主要介紹了C語言中的結(jié)構(gòu)體快排算法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • vscode+platformIO開發(fā)stm32f4的實(shí)現(xiàn)

    vscode+platformIO開發(fā)stm32f4的實(shí)現(xiàn)

    這篇文章主要介紹了vscode+platformIO開發(fā)stm32f4的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 解讀C++中枚舉(enum)的使用

    解讀C++中枚舉(enum)的使用

    對于開發(fā)C++來說,枚舉是一個幾乎必然用到的功能。當(dāng)然今天要講的枚舉肯定不是平常漫不經(jīng)心的使用,而是從里到外地深扒它。本文就來逐漸揭開它神秘地面紗,發(fā)現(xiàn)一些未曾注意到的東西吧
    2023-03-03
  • C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)

    C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)

    下面小編就為大家?guī)硪黄狢++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 淺談C語言編程中程序的一些基本的編寫優(yōu)化技巧

    淺談C語言編程中程序的一些基本的編寫優(yōu)化技巧

    這篇文章主要介紹了C語言編程中程序的一些基本的編寫優(yōu)化技巧,文中涉及到了基礎(chǔ)的C程序內(nèi)存方面的知識,非常推薦!需要的朋友可以參考下
    2016-02-02
  • 配置CLion管理Qt項(xiàng)目國際化支持的方法

    配置CLion管理Qt項(xiàng)目國際化支持的方法

    這篇文章主要介紹了配置CLion管理Qt項(xiàng)目國際化支持的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 如何利用Emacs來調(diào)試C++程序

    如何利用Emacs來調(diào)試C++程序

    本文給大家分享的是使用編輯器中的神器Emacs來調(diào)試C++程序的方法,非常的細(xì)致全面,有需要的小伙伴可以參考下
    2016-03-03
  • linux之a(chǎn)wk命令的用法

    linux之a(chǎn)wk命令的用法

    awk是一個非常棒的數(shù)字處理工具。相比于sed常常作用于一整行的處理,awk則比較傾向于將一行分為數(shù)個“字段”來處理。運(yùn)行效率高,而且代碼簡單,對格式化的文本處理能力超強(qiáng)
    2013-10-10

最新評論