国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++文件讀取的四種方式

這篇具有很好參考價(jià)值的文章主要介紹了C++文件讀取的四種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

C++可以根據(jù)不同的目的來選取文件的讀取方式,目前為止學(xué)習(xí)了C++中的四種文件讀取方式。

C++文件讀取的一般步驟:

1、包含頭文件 #include<fstream>

2、創(chuàng)建流對(duì)象:ifstream ifs(這里的ifs是自己起的流對(duì)象名字)

3、打開文件:file.open("文件路徑","打開方式"),打開文件后并判斷文件是否打開成功,ifs.is_open()是用于判斷文件是否打開的語句

4、進(jìn)行文件讀取操作

5、關(guān)閉文件

ifs.close();

第一種方法:采用“<<”運(yùn)算符

#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
 // 創(chuàng)建流對(duì)象	
ifstream ifs;
 //打開文件并判斷是否打開成功如果成功則讀取數(shù)據(jù)
	readFile.open("test.txt", ios::in);
	if (ifs.is_open())
	{
		cout << "文件打開成功" << endl;
		//第一種方法
        char buf[100] = { 0 };
		while (ifs >>buf)
		{
			cout << buf << endl;
		}
	}
	else
	{
		cout << "文件打開失敗" << endl;
	}
    //關(guān)閉文件
	ifs.close();
 
 
	return 0;
}

或者可以寫成以下,將判斷是否成功打開文件換一種方式實(shí)現(xiàn)讀取數(shù)據(jù)


#include<iostream>
#include<fstream>
using namespace std;

void test01()
{
	// 2創(chuàng)建流文件
	ifstream ifs;
	// 3打開文件并判斷是否打開成功
	ifs.open("test.txt", ios::in);
		if (!ifs.is_open())
		{
			cout << "打開失敗" << endl;
			
		}
		//讀數(shù)據(jù)第一種方法
		char buff[1024] = {0};
		while (ifs >> buf)
		{
			cout << buf << endl;
		}

解釋:這種方式和采用cin>>進(jìn)行寫入類型,ifs>>buf進(jìn)行寫入時(shí)永遠(yuǎn)是從buff[0]開始,不會(huì)進(jìn)行追加式的寫入,ifs在遇到EOF(End Of File)時(shí)會(huì)返回False,以此來跳出while循環(huán)。

局限性:由于“<<”運(yùn)算符自身的性質(zhì),會(huì)將一切空格當(dāng)作終止條件,這樣的話就無法輸出空格信息,采用這種方法會(huì)將一行信息進(jìn)行分段讀出,對(duì)于類對(duì)象的信息讀取是很有用的
?

?第二種方法:利用<string>中的getline函數(shù),按行讀取,這樣每一行內(nèi)的所有空格也可以順利讀取

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
 
int main()
{
	ifstream ifs;
	ifs.open("test.txt", ios::in);
 
	if (readFile.is_open())
	{
		cout << "文件打開成功" << endl;
		
		string buf;
		while (getline(ifs,buf))
		{
			cout << buf << endl;
		}
	}
	else
	{
		cout << "文件打開失敗" << endl;
	}
 //關(guān)閉文件   
 ifs.close();
  
	return 0;
}

同樣,也有兩種方式

#include<iostream>
#include<fstream>
using namespace std;

void test01()
{
	// 2創(chuàng)建流文件
	ifstream ifs;
	// 3打開文件并判斷是否打開成功
	ifs.open("test.txt", ios::in);
		if (!ifs.is_open())
		{
			cout << "打開失敗" << endl;
			
		}
      //第二種
		string buf;
		while(getline(ifs,buf))
		{
			cout << buf << endl;
		}
    //5 關(guān)閉文件
		ifs.close();
}

getline()函數(shù)會(huì)在文件讀完時(shí)返回False跳出while循環(huán),getline可以一次讀取一行文件,保持讀出內(nèi)容和文件內(nèi)容一致。文章來源地址http://www.zghlxwxcb.cn/news/detail-508750.html

第三種方法:?利用ifs流對(duì)象內(nèi)部的getline方法,這個(gè)名字雖然和第二種中的一樣,但是傳入的參數(shù)不同,并不是同一個(gè)函數(shù)

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
 
int main()
{
//創(chuàng)建流對(duì)象	
ifstream ifs;
	readFile.open("test.txt", ios::in);
 
    //判斷文件是否成功打開成功則讀取數(shù)據(jù)
	if (ifs.is_open())
	{
		cout << "文件打開成功" << endl;
		char buf[100] = { 0 };
		while (ifs.getline(buf,sizeof(buf)))
	    {
		    cout << buf << endl;
        }
		
	}
	else
	{
		cout << "文件打開失敗" << endl;
	}
 
 
     //關(guān)閉文件
	ifs.close();
	return 0;
}
 
#include<iostream>
#include<fstream>
using namespace std;

void test01()
{
	// 2創(chuàng)建流文件
	ifstream ifs;
	// 3打開文件并判斷是否打開成功
	ifs.open("test.txt", ios::in);
		if (!ifs.is_open())
		{
			cout << "打開失敗" << endl;
			
		}
        //讀取數(shù)據(jù)的第三種方法
		char buf[100] = { 0 };
		while (ifs.getline(buf, sizeof(buf)))
		{
			cout << buf << endl;
		}
    //5 關(guān)閉文件
		ifs.close();
}

?第四種方法:利用ifs內(nèi)部的get()函數(shù)一個(gè)個(gè)的將字符讀出來,遇到EOF時(shí)返回False退出while循環(huán),EOF 是 end of file的標(biāo)志,不太建議使用這個(gè),因?yàn)檫@個(gè)很慢,只能一個(gè)一個(gè)字符讀取

#include<iostream>
#include<fstream>
using namespace std;
 
int main()
{
    //創(chuàng)建流對(duì)象
	ifstream ifs;
	ifs.open("test.txt", ios::in);
	//判斷是否成功打開如果打開則讀取數(shù)據(jù)
	if (ifs.is_open())
	{
		cout << "文件打開成功" << endl;
		char buf = 0;
		while ((buf=ifs.get())!=EOF)
		{
			cout << buf;
		}
	}
	else
	{
		cout << "文件打開失敗" << endl;
	}
//關(guān)閉文件	
ifs.close();
	return 0;
}
 
#include<iostream>
#include<fstream>
using namespace std;

void test01()
{
	// 2創(chuàng)建流文件
	ifstream ifs;
	// 3打開文件并判斷是否打開成功
	ifs.open("text.txt", ios::in);
		if (!ifs.is_open())
		{
			cout << "打開失敗" << endl;
			
		}
	// 第四種讀取方法
		char c;
		while(((c = ifs.get()) != EOF))
		{
			cout << c;
		
		}
		//5 關(guān)閉文件
		ifs.close();
}

到了這里,關(guān)于C++文件讀取的四種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JavaScript中的四種枚舉方式

    JavaScript中的四種枚舉方式

    字符串和數(shù)字具有無數(shù)個(gè)值,而其他類型如布爾值則是有限的集合。 一周的日子(星期一,星期二,...,星期日),一年的季節(jié)(冬季,春季,夏季,秋季)和基本方向(北,東,南,西)都是具有有限值集合的例子。 當(dāng)一個(gè)變量有一個(gè)來自有限的預(yù)定義常量的值時(shí),使用

    2024年02月03日
    瀏覽(24)
  • 創(chuàng)建多線程的四種方式

    創(chuàng)建多線程的四種方式

    ① 創(chuàng)建一個(gè)類繼承 Thread 類,重寫 run() 方法 ② 調(diào)用 start() 方法啟動(dòng)線程 例: ① 創(chuàng)建類實(shí)現(xiàn) Runnable 接口,重寫 run() 方法 ② 以實(shí)現(xiàn)類作為構(gòu)造器參數(shù),創(chuàng)建一個(gè)線程( Thread )對(duì)象 ③ 調(diào)用 start() 方法啟動(dòng)線程 例 注意:實(shí)現(xiàn)Runnable接口方式中,調(diào)用的不是Thread類的run()方法

    2024年02月10日
    瀏覽(18)
  • 單例模式的四種創(chuàng)建方式

    單例模式是日常開發(fā)中最常見的一種設(shè)計(jì)模式,常用來做為池對(duì)象,或者計(jì)數(shù)器之類的需要保證全局唯一的場(chǎng)景。 單例模式的目的是保證在整個(gè)程序中只存在一個(gè)對(duì)象實(shí)例,使用單例一個(gè)前提條件就是構(gòu)造器私有化,不允許通過new 對(duì)象的方式。單例模式的實(shí)現(xiàn)主要方式有如

    2024年02月01日
    瀏覽(27)
  • Java創(chuàng)建數(shù)組的四種方式

    1.使用默認(rèn)值來初始化 語法: 數(shù)組元素類型 [] 數(shù)組名稱 = new 數(shù)組元素類型 [數(shù)組長(zhǎng)度] EG: int [] nums = new int [5]; //創(chuàng)建了一個(gè)類型為int,名字為nums ,長(zhǎng)度為5的數(shù)組 2.先聲明一個(gè)數(shù)組,再給值 語法: 數(shù)據(jù)元素類型 [] 數(shù)組名稱; 數(shù)組名稱 = new 數(shù)組元素類型[數(shù)組長(zhǎng)度]; EG: int [] nums; num

    2024年02月09日
    瀏覽(36)
  • C#對(duì)象的四種比較方式

    1.ReferenceEquals(object?o1,?object?o2): 靜態(tài)方法: 比較兩個(gè)對(duì)象的引用,引用相同返回true,否則返回false,同為null是返回true; ReferenceEquals進(jìn)行值類型比較時(shí)總是返回false,因?yàn)閮蓚€(gè)值類型需要分別裝箱到對(duì)象中,是不同的引用?; 從名稱中便可知它用來比較兩者是否是相同的引

    2024年02月16日
    瀏覽(15)
  • SpringBoot導(dǎo)出Excel的四種方式

    SpringBoot導(dǎo)出Excel的四種方式

    ? ? ? ?近期接到了一個(gè)小需求,要將系統(tǒng)中的數(shù)據(jù)導(dǎo)出為Excel,且能將Excel數(shù)據(jù)導(dǎo)入到系統(tǒng)。對(duì)于大多數(shù)研發(fā)人員來說,這算是一個(gè)最基本的操作了。但是……我居然有點(diǎn)方! ? ? ? ? 好多年沒有實(shí)操這種基礎(chǔ)的功能了。我對(duì)于excel導(dǎo)入導(dǎo)出的印象還停留在才入行時(shí)的工作經(jīng)

    2024年02月03日
    瀏覽(25)
  • 記錄-實(shí)現(xiàn)深拷貝的四種方式

    記錄-實(shí)現(xiàn)深拷貝的四種方式

    深拷貝:在堆內(nèi)存中重新開辟一個(gè)存儲(chǔ)空間,完全克隆一個(gè)一模一樣的對(duì)象 淺拷貝:不在堆內(nèi)存中重新開辟空間,只復(fù)制棧內(nèi)存中的引用地址。本質(zhì)上兩個(gè)對(duì)象(數(shù)組)依然指向同一塊存儲(chǔ)空間 使用遞歸的方式進(jìn)行對(duì)象(數(shù)組)的深拷貝 奉上已封裝的深拷貝函數(shù)?? 上方函

    2023年04月21日
    瀏覽(21)
  • gRpc的四種通信方式詳細(xì)介紹

    gRpc的四種通信方式詳細(xì)介紹

    ???? 博主貓頭虎 帶您 Go to New World.??? ?? 博客首頁——貓頭虎的博客?? ??《面試題大全專欄》 文章圖文并茂??生動(dòng)形象??簡(jiǎn)單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍專欄》學(xué)會(huì)IDEA常用操作,工作效率翻倍~?? ?? 《100天精通Golang(基礎(chǔ)入門篇)》學(xué)會(huì)Golang語言

    2024年02月11日
    瀏覽(19)
  • python導(dǎo)入庫的四種方式

    目錄 前言 一、import 庫名 二、import 庫名 as 別名(變量名) 三、from 庫名 import 方法名 四、from 庫名 import* 庫可以抽象的理解為一個(gè)工具包,而庫里的方法可以理解為工具包里各式各樣的工具,每個(gè)工具作用不同。 此文例子庫名為pygame,也就是工具包的名字,例子方法為ini

    2024年02月05日
    瀏覽(24)
  • List移除元素的四種方式

    List移除元素的四種方式

    四種方式: 方式一,使用 Iterator ,順序向下,如果找到元素,則使用 remove 方法進(jìn)行移除。 方式二,倒序遍歷 List ,如果找到元素,則使用 remove 方法進(jìn)行移除。 方式三,正序遍歷 List ,如果找到元素,則使用 remove 方法進(jìn)行移除,然后進(jìn)行索引 “自減”。 方式四,使用

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包