日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]有不少人用eof函數(shù)碰到讀多了一次的問題,但凡c/c++里的eof函數(shù),比如feof,fstream對象的eof函數(shù)等等,都是相同的原理。還原一下現(xiàn)場:#include#includeusing?na

有不少人用eof函數(shù)碰到讀多了一次的問題,但凡c/c++里的eof函數(shù),比如feof,fstream對象的eof函數(shù)等等,都是相同的原理。

還原一下現(xiàn)場:

#include#includeusing?namespace?std;
int?main()
{
	fstream?out;
	out.open("test.txt",ios::out);
	int?k=3;
	for(int?i=0;i<6;i++)
		out<<k<<"?";
	out.close();


	out.open("test.txt",ios::in);
	while(!out.eof())
	{
		out>>k;
		cout<<k<<endl;
	}
	out.close();
	return?0;
}


運(yùn)行會(huì)發(fā)現(xiàn)寫了6個(gè)3進(jìn)去,打開文件看也是6個(gè)3,但是讀卻讀了7個(gè)出來。

這主要是eof標(biāo)志延遲了。eof主要是根據(jù)eofbit來確定返回值的:

bool?eof()
{
	if(eofbit)
	return?true;
	else?return?false;
}

而eofbit是在讀取中設(shè)置的,讀取到最后一次時(shí),eofbit仍然為false;到下一次讀取失敗后,它才更新eofbit為true,也就是說要犯一次錯(cuò)才知道。在這嘗試讀取中,讀取失敗,所以k還是上一次的值。

因此,一般都是直接把讀取語句放在while循環(huán)里面。

#include#includeusing?namespace?std;
int?main()
{
	fstream?out;
	out.open("test.txt",ios::out);
	int?k=3;
	for(int?i=0;i<6;i++)
		out<<k<<"?";
	out.close();


	out.open("test.txt",ios::in);
	while(out>>k)
	{
		
		cout<<k<<endl;
	}
	out.close();
	return?0;
}

如果一定要用eof函數(shù),那么就先讀取一次。

#include#includeusing?namespace?std;
int?main()
{
	fstream?out;
	out.open("test.txt",ios::out);
	int?k=3;
	for(int?i=0;i<6;i++)
		out<<k<<"?";
	out.close();


	out.open("test.txt",ios::in);
	
	//here
	out>>k;
	while(!out.eof())
	{
		out>>k;
		cout<<k<<endl;
	}
	out.close();
	return?0;
}

c語言中的函數(shù)也是類似這樣子。




本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

其實(shí)在 c++語言里面const修飾的才算是一個(gè)真正的常量,在 c 語言中 const 可以說是個(gè)“冒牌貨”。為什么會(huì)這樣?其實(shí)是 c++ 編譯器對 const 進(jìn)行了加強(qiáng),當(dāng) c++ 編譯器遇到常量聲明時(shí),不會(huì)像 c...

關(guān)鍵字: c++ C語言 const

返回函數(shù)的引用去初始化一個(gè)新的引用這個(gè)和前面一樣,都是不會(huì)產(chǎn)生副本,但是現(xiàn)在是用返回值去初始化一個(gè)引用聲明c,也就是說這時(shí)候變成了變量temp的別名,在c的生命周期內(nèi)temp是一直有效的,這樣做完全可以。

關(guān)鍵字: c++ 返回值 引用聲明

C++是一種面向?qū)ο蟮母呒壋绦蛟O(shè)計(jì)語言,是C語言的超集。

關(guān)鍵字: c++ C語言

以前都只是在網(wǎng)上搜的能用的例子,對一些參數(shù)不是很清楚,這次匯總。而且網(wǎng)絡(luò)通信還是很常用的通信手段。

關(guān)鍵字: api c Linux socket

什么是Littelfuse setP?溫度指示器?它有什么作用?2019年6月12日訊 - - Littelfuse, Inc. (NASDAQ: LFUS)今日宣布推出經(jīng)過擴(kuò)展的PolySwitch? setP? 系列...

關(guān)鍵字: c littelfuse type USB 連接器

第三方代碼的使用是企業(yè)能夠快速高效建立新系統(tǒng)、新產(chǎn)品、新平臺的關(guān)鍵因素,能大幅度縮短開發(fā)周期,減少人力和資金的投入。目前大部分第三方代碼包含大量的開源代碼,并且主要是以二進(jìn)制代碼或是源代碼的方式

關(guān)鍵字: c 代碼

作為初學(xué)者,我想記錄一下我的學(xué)習(xí)狀況,一是可以回頭尋找自己的進(jìn)步,二是希望我可以通過這種學(xué)習(xí)方式來指導(dǎo)未來想學(xué)的伙伴們。

關(guān)鍵字: c C語言 Linux

根據(jù)今年早些時(shí)候發(fā)布的2019年關(guān)于嵌入式市場研究的報(bào)告,雖然物聯(lián)網(wǎng)、嵌入式視覺、機(jī)器學(xué)習(xí)和其他新興技術(shù)的重要性日益提高,但C和C ++仍是嵌入式開發(fā)中占主導(dǎo)地位的編程語言。

關(guān)鍵字: c python 嵌入式 技術(shù)前沿 ++

分析:這是Adobe 公司2007 年校園招聘的最新筆試題。這道題除了考察應(yīng)聘者的C++ 基本功底外,還能考察反應(yīng)能力,是一道很好的題目。 在Java 中定義了關(guān)鍵字final ,被final 修飾的

關(guān)鍵字: c++ class

單例模式 單例模式,可以說設(shè)計(jì)模式中最常應(yīng)用的一種模式了,據(jù)說也是面試官最喜歡的題目。但是如果沒有學(xué)過設(shè)計(jì)模式的人,可能不會(huì)想到要去應(yīng)用單例模式,面對單例模式適用的情況,可能會(huì)優(yōu)先考慮使用全局或者靜

關(guān)鍵字: c 單例 qt單例模式
關(guān)閉