ifstrem的eof狀態問題

發表于:2007-05-25來源:作者:點擊數: 標簽:問題FreeBSDifstremeof狀態
freebsd 5.3, gcc3.4.2 這樣一段代碼, ifstream infile; string line; infile.open(file1); cout infile.is_open()= infile.is_open() endl; cout infile.eof()= infile.eof() endl; while(!infile.eof()){ std::getline(infile, line); } infile.close();
freebsd 5.3, gclearcase/" target="_blank" >cc3.4.2
這樣一段代碼,

        ifstream infile;
        string line;

        infile.open("file1");
        cout << "infile.is_open()=" << infile.is_open() << endl;
        cout << "infile.eof()=" << infile.eof() << endl;
        while(!infile.eof()){
                std::getline(infile, line);
        }                               
        infile.close();
        infile.open("file2");
        cout << "infile.is_open()=" << infile.is_open() << endl;
        cout << "infile.eof()=" << infile.eof() << endl;
        infile.close();

輸出的結果是,

infile.is_open()=1
infile.eof()=0
infile.is_open()=1
infile.eof()=1

而如果在file1的操作中去掉那段while的讀操作,此時結果為,

infile.is_open()=1
infile.eof()=0
infile.is_open()=1
infile.eof()=0

看來close()并沒有清除掉eof狀態,解決的方法是調用一次clear()。




原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97