posts - 9, comments - 3, trackbacks - 0, articles - 1

          先來看一段小代碼

          #include?"iostream"
          #include?
          "fstream"
          using?namespace?std;

          void?main()
          {
          ????
          int?i;
          ????ifstream?fis(
          "input.txt");
          ????
          while?(!fis.eof())
          ????
          {
          ????????fis
          >>i;
          ????????cout
          <<i<<endl;
          ????}

          ????fis.close();
          }
          input.txt文件里面是一些數字,如果是
          23 23? 44? 5? 23? 56?? 空格 回車
          那么讀出的結果將是多出一個56來,為什么會這樣呢?
          因為fis.eof()并沒有指向文件的末尾,fis>>i 由于讀出類型與int不同,忽略。
          而i的值還是上一次輸入的56,故多輸出了一次。
          解決方法如下
          #include?"iostream"
          #include?
          "fstream"
          using?namespace?std;

          void?main()
          {
          ????
          int?i;
          ????ifstream?fis(
          "input.txt");

          ????
          while?(fis>>i)
          ????
          {????
          ????????cout
          <<i<<endl;
          ????}

          ????fis.close();
          }

          Feedback

          # re: 用C++流讀文件,文件末尾多加了空格怎么辦  回復  更多評論   

          2006-11-24 14:08 by
          我發現即使不在文件尾多寫個空格也會產生這種情況,那是怎么回事呢?

          # re: 用C++流讀文件,文件末尾多加了空格怎么辦  回復  更多評論   

          2006-11-24 14:16 by
          請問在判斷條件里直接寫(!fis)也會多出最后一個數的值,那是怎么回事呢?剛才的反饋寫錯了,我的判斷條件是(!fis),不是你的那種。你的解決方法很不錯,我也經常遇到同樣的問題。

          # re: 用C++流讀文件,文件末尾多加了空格怎么辦  回復  更多評論   

          2007-11-04 13:59 by liangent
          fin.fail()
          主站蜘蛛池模板: 合川市| 施秉县| 望江县| 吉隆县| 怀远县| 板桥市| 陈巴尔虎旗| 修文县| 长丰县| 上饶县| 乌恰县| 许昌县| 武邑县| 苗栗县| 怀仁县| 平遥县| 盘锦市| 武安市| 抚宁县| 玛曲县| 张家界市| 株洲县| 松滋市| 巴彦淖尔市| 峨眉山市| 南京市| 三门县| 吉隆县| 湖口县| 梁河县| 法库县| 黄冈市| 天气| 象山县| 鹤山市| 泸溪县| 永靖县| 通道| 大港区| 塘沽区| 临猗县|