哪吒2之魔童闹海|哪吒2之魔童归来免费观看|哪吒2在线观看|哪吒2魔童闹海电影免费观看|哪吒2免费观看完整版大电影|哪吒1免费观看完整版

新疆軟件開(kāi)發(fā)

本站首頁(yè) 軟件開(kāi)發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開(kāi)發(fā)公司 >> 開(kāi)發(fā)語(yǔ)言 >> 文章正文

C++的文件結(jié)束符

C++中是通過(guò)流的方式來(lái)訪(fǎng)問(wèn)文件的,比如說(shuō)語(yǔ)句 ifstream in("str.txt",ios::in); ,就打開(kāi)了文件str.txt。我們可以通過(guò)in.read()來(lái)讀取流in(也就是文件str.txt)中的數(shù)據(jù),F(xiàn)在問(wèn)題來(lái)了:我們?cè)趺磁袛嗪螘r(shí)讀到了這個(gè)文件的末尾呢?     在C++中,文件的結(jié)束標(biāo)志是EOF——顧名思義,End Of File。也就是說(shuō),在文件的某個(gè)字節(jié)b后面加入一個(gè)EOF,就表示這個(gè)字節(jié)b就是該文件的最后一個(gè)字節(jié)了。這里順便說(shuō)一句,EOF占一個(gè)字節(jié)的大小,其值為-1。
還是舉個(gè)例子吧!——運(yùn)行環(huán)境為Microsoft Visual C++ 2005。
 
#include <fstream>
#include <iostream>
using namespace std;

int main()...{
    char c=’a’;
    ofstream out("str.txt",ios::out);
    for(int i=0;i<10;i++,c++)
        out.write(&c,sizeof(char));
    out.close();

    int i=0;
    ifstream in("str.txt",ios::in);
    while(in)...{
        c=in.get();
        cout<<c;
        i++;
    }
    cout<<i;


    cin.get();
}
 
在in讀完字符’j’的時(shí)候,其實(shí)已經(jīng)到達(dá)文件的末尾了,但此時(shí)流in的狀態(tài)還是good,也就是說(shuō)還可以繼續(xù)讀入下一個(gè)字節(jié)。而當(dāng)in繼續(xù)往下讀的時(shí)候,就會(huì)讀到EOF了,當(dāng)讀完EOF并賦值給c后,流in的狀態(tài)就變成了eofbit,不可再讀,在條件判斷語(yǔ)句中流in也就成了false了。所以真正讀入的字節(jié)數(shù)其實(shí)是11,而不是文件的長(zhǎng)度10。
而文件的輸出為 abcdefghij11 ,用UltraEdit打開(kāi),切換到16進(jìn)制模式下可以看到,j和11中間的那個(gè)空格的ASCII碼為FF,也就是2進(jìn)制的11111111,就是-1的補(bǔ)碼。

作者:未知 | 文章來(lái)源:未知 | 更新時(shí)間:2007-11-2 16:16:51

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    C++基礎(chǔ)知識(shí):結(jié)構(gòu)體數(shù)據(jù)的指針變量
    如何實(shí)現(xiàn)C與C++程序的相互調(diào)用
    在C++中成員函數(shù)如何實(shí)現(xiàn)操作符重載?
    基礎(chǔ)學(xué)習(xí):C++非成員函數(shù)實(shí)現(xiàn)操作符重載
    基礎(chǔ)學(xué)習(xí):C++重載輸入輸出符
    基礎(chǔ)學(xué)習(xí):C++重載下標(biāo)結(jié)算符
    基礎(chǔ)學(xué)習(xí):C++中重載調(diào)用操作符
    基礎(chǔ)學(xué)習(xí):C++重載轉(zhuǎn)換操作符operator (type)
    C++類(lèi)復(fù)制控制學(xué)習(xí)
    C++類(lèi)析構(gòu)函數(shù)學(xué)習(xí)
    軟件技術(shù)
    · 開(kāi)發(fā)語(yǔ)言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開(kāi)發(fā)
    最新文章  
    ·搜集整理的asp.net的驗(yàn)證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項(xiàng)目開(kāi)發(fā)中應(yīng)該考慮那
    ·搜集整理的javascript sel
    ·軟件開(kāi)發(fā)中項(xiàng)目經(jīng)理有那些
    ·學(xué)習(xí)如何在Lambda表達(dá)式進(jìn)
    ·C++基礎(chǔ)知識(shí):結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實(shí)現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補(bǔ)了一部分java的
    ·rss定制的另外一種實(shí)現(xiàn)方式
    ·delphi實(shí)現(xiàn)利用arp欺騙來(lái)實(shí)
    ·基礎(chǔ)學(xué)習(xí):基于WF的流程框
    ·網(wǎng)絡(luò)編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開(kāi)發(fā)過(guò)程中的性能設(shè)計(jì)
    關(guān)于我們 | 軟件開(kāi)發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開(kāi)發(fā)網(wǎng) www.pg11qqq.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開(kāi)發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000