0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++之文件操作

wang123a ? 來(lái)源:wang123a ? 作者:wang123a ? 2023-07-21 10:52 ? 次閱讀

C++中文件操作頭文件:fstream

文件類型:文件文件和二進(jìn)制文件

文件操作三大類:

ofstream 寫操作
ifstream 讀操作
fstream:讀寫操作

文件打開方式:

標(biāo)志 說(shuō)明
ios::in 只讀
ios::out 只寫,文件不存在則創(chuàng)建,存在則打開并截?cái)嘣瓋?nèi)容
ios::ate 打開一個(gè)已有的文件,并指向文件讀指針指向文件尾,若文件不存在,則打開出錯(cuò)
ios::app 打開文件,從文件尾添加內(nèi)容,若文件不存在則創(chuàng)建
ios::trunc 打開文件同時(shí)會(huì)截?cái)嘣瓋?nèi)容,單獨(dú)使用時(shí)與ios::out相同
ios::binary 以二進(jìn)制方式打開
ios::in|ios::out 打開文件,可讀也可寫,文件打開時(shí)原內(nèi)容保持不變,若不存在則打開出錯(cuò)
ios::in|ios::out|ios::trunc 打開文件,可讀寫,會(huì)截?cái)嘣瓋?nèi)容,文件不存在則創(chuàng)建

1.文本方式寫入示例

#include 
#include 
using namespace std;
int main()
{
	/*1.創(chuàng)建文件*/
	ofstream fp;
	fp.open("test.txt",ios::out);//創(chuàng)建文件,會(huì)截?cái)嘣瓋?nèi)容
	if (!fp.is_open())//文件打開失敗返回false
	{
		cout 

2.文本方式讀取示例

C++中讀取數(shù)據(jù)有多種方式實(shí)現(xiàn)。

2.1 示例1:重載>>讀取

#include 
#include 
using namespace std;
int main()
{
	ifstream ifs;
	ifs.open("test.txt",ios::in);//只讀方式打開
	if (!ifs.is_open())
	{
		cout > str)//以字符串方式讀取
	{
		cout 

2.2 利用成員函數(shù)getline讀取

#include 
#include 
using namespace std;
int main()
{
	ifstream ifs;
	ifs.open("test.txt",ios::in);//只讀方式打開
	if (!ifs.is_open())
	{
		cout 

2.3 單個(gè)字符方式讀取get()

#include 
#include 
using namespace std;
int main()
{
	ifstream ifs;
	ifs.open("test.txt",ios::in);//只讀方式打開
	if (!ifs.is_open())
	{
		cout 

3.二進(jìn)制方式讀寫示例

  • 二進(jìn)制數(shù)據(jù)寫入文件
函數(shù):write(const _Elem* _Str, streamsize _Count)
 形參:_Str --寫入的內(nèi)容的起始地址
       _Count  --寫入的字節(jié)數(shù)
  • 二進(jìn)制數(shù)據(jù)讀取文件
read(_Elem* _Str, streamsize _Count) ;
 形參:_Str --讀取內(nèi)容存放緩沖區(qū)
       _Count --要讀取的字節(jié)數(shù)
#include 
#include 
#include 
using namespace std;
class Person
{
public:
	Person() {}
	Person(const char* name, int age)
	{
		strcpy_s(this->name, name);
		this->age = age;
	}
	char name[20];//姓名
	int age;//年齡
};
int main()
{
	/*二進(jìn)制寫入數(shù)據(jù)示例*/
	fstream fs("test.doc", ios::out | ios::binary);
	if (!fs.is_open())
	{
		cout 

4.C++指針偏移

C++文件指針偏移
  seekg(pos_type _Pos,ios_base::seekdir _Way)  --用于輸入流,偏移位置指針到指定位置
  seekp(pos_type _Pos,ios_base::seekdir _Way)  --用于輸出流,偏移位置指針到指定位置
	第一個(gè)參數(shù):偏移量
	第二個(gè)參數(shù):基于哪個(gè)位置
				ios::beg  --文件頭
				ios::end  --文件尾
				ios::cur  --當(dāng)前位置
  streamoff tellg()  --用于輸入流,返回當(dāng)前指針位置,streamoff 是一個(gè)long long類型
  streamoff tellp()  --用于輸出流,返回當(dāng)前指針位置
  返回值返回基于文件頭的偏移量,字節(jié)為單位。失敗則返回-1

示例:

#include 
#include 
using namespace std;
int main()
{
	ifstream fs;
	fs.open("test.txt", ios::in );//打開文件,不存在則打開失敗,不會(huì)截?cái)嘣瓋?nèi)容
	if (!fs.is_open())
	{
		cout > buff)
	{
		cout 
wKgZomS4_QKAcX2TAAPAXxnDagM496.png

5.C++中使用fopen系列函數(shù)示例

#define _CRT_SECURE_NO_DEPRECATE
#include 
using namespace std;
int main()
{
	cout 
wKgZomS5FoKALLkTAASjGoeV-P4987.png


審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2085

    瀏覽量

    73301
  • 文件操作
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    5326
  • 頭文件
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    9817
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C++STL算法(二)

    C++STL算法(二)
    的頭像 發(fā)表于 07-18 14:49 ?854次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>STL算法(二)

    c++STL算法(三)

    c++STL算法(三)
    的頭像 發(fā)表于 07-18 15:00 ?1070次閱讀
    <b class='flag-5'>c++</b><b class='flag-5'>之</b>STL算法(三)

    MSP430裸奔框架C++程序源碼(菜農(nóng)C++裸奔大法系列之一) 轉(zhuǎn)載

    /*------------------------------------------------------------------------MSP430裸奔框架C++程序源碼(菜農(nóng)C++裸奔大法)本程序主要表現(xiàn)了
    發(fā)表于 02-01 11:06

    在main文件中怎樣去使用C++

    ESP32 ESP-IDF 學(xué)習(xí)筆記(五 - 2)【使用C++的工程】文章目錄ESP32 ESP-IDF 學(xué)習(xí)筆記(五 - 2)【使用C++的工程】1、導(dǎo)言2、在main
    發(fā)表于 01-07 07:44

    C/C++文件大全

    C/C++文件一覽,一本很好的工具速查手冊(cè)
    發(fā)表于 11-10 17:45 ?0次下載

    C++ Builder 操作ini文件讀寫

    C++ Builder 操作ini文件讀寫
    發(fā)表于 12-15 22:50 ?0次下載

    如何在C++代碼中使用C文件

    。 12.3.1 在C++中使用系統(tǒng)C文件 要包括標(biāo)準(zhǔn)的系統(tǒng) C文件,如 stdio.h,不必進(jìn)行任何特殊
    發(fā)表于 10-19 09:24 ?3次下載

    高質(zhì)量C++C編程指南資料說(shuō)明

    每個(gè) C++/C 程序通常分為兩個(gè)文件。一個(gè)文件用于保存程序的聲明(declaration),稱為頭文件。另一個(gè)
    發(fā)表于 03-14 08:00 ?2次下載

    虛擬機(jī):使用cscope瀏覽C++文件

    cscope 本意是用來(lái)查看c文件的。但是也可以查看C++文件。方法如下:
    的頭像 發(fā)表于 06-22 14:29 ?2021次閱讀
    虛擬機(jī):使用cscope瀏覽<b class='flag-5'>C++</b><b class='flag-5'>文件</b>

    C++操作符重載學(xué)習(xí)的總結(jié)

    操作符重載是c++的強(qiáng)大特性之一;操作符重載的本質(zhì)是通過(guò)函數(shù)擴(kuò)展操作符的功能;operator 關(guān)鍵字是實(shí)現(xiàn)操作符重載的關(guān)鍵。
    的頭像 發(fā)表于 12-24 16:36 ?594次閱讀

    LabVIEW教學(xué)數(shù)據(jù)文件操作

    LabVIEW教學(xué)數(shù)據(jù)文件操作說(shuō)明。
    發(fā)表于 03-29 15:18 ?29次下載

    C++設(shè)計(jì)新思維-泛型編程與設(shè)計(jì)應(yīng)用

    C++設(shè)計(jì)新思維-泛型編程與設(shè)計(jì)應(yīng)用
    發(fā)表于 11-16 15:59 ?3次下載

    C++入門表達(dá)式

    C++中提供了很多操作符且定義了什么時(shí)候可以用于操作基本類型,其還允許我們定義用于操作class類型的操作符,接下來(lái)幾篇文章將會(huì)介紹
    的頭像 發(fā)表于 03-17 13:55 ?573次閱讀

    C++學(xué)習(xí)筆記c++的基本認(rèn)識(shí)

    自這篇文章我們即將開始C++的奇幻之旅,其內(nèi)容主要是讀C++ Primer的總結(jié)和筆記,有興趣可以找原版書看看,對(duì)于學(xué)習(xí)C++還是有很大幫助的。這篇文章將從一個(gè)經(jīng)典的程序開始介紹C++
    的頭像 發(fā)表于 03-17 13:57 ?624次閱讀

    C++之父新作帶你勾勒現(xiàn)代C++地圖

    為了幫助大家解決這些痛點(diǎn)問題,讓大家領(lǐng)略現(xiàn)代C++美,掌握其中的精髓,更好地使用C++,C++之父Bjarne Stroustrup坐不住了,他親自操刀寫就了這本《
    的頭像 發(fā)表于 10-30 16:35 ?696次閱讀
    <b class='flag-5'>C++</b>之父新作帶你勾勒現(xiàn)代<b class='flag-5'>C++</b>地圖