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

當前位置:首頁 > > 充電吧
[導讀]有不少人用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;
}


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

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

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

而eofbit是在讀取中設置的,讀取到最后一次時,eofbit仍然為false;到下一次讀取失敗后,它才更新eofbit為true,也就是說要犯一次錯才知道。在這嘗試讀取中,讀取失敗,所以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ù)也是類似這樣子。




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

其實在 c++語言里面const修飾的才算是一個真正的常量,在 c 語言中 const 可以說是個“冒牌貨”。為什么會這樣?其實是 c++ 編譯器對 const 進行了加強,當 c++ 編譯器遇到常量聲明時,不會像 c...

關鍵字: c++ C語言 const

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

關鍵字: c++ 返回值 引用聲明

C++是一種面向對象的高級程序設計語言,是C語言的超集。

關鍵字: c++ C語言

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

關鍵字: api c Linux socket

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

關鍵字: c littelfuse type USB 連接器

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

關鍵字: c 代碼

作為初學者,我想記錄一下我的學習狀況,一是可以回頭尋找自己的進步,二是希望我可以通過這種學習方式來指導未來想學的伙伴們。

關鍵字: c C語言 Linux

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

關鍵字: c python 嵌入式 技術前沿 ++

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

關鍵字: c++ class

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

關鍵字: c 單例 qt單例模式
關閉