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

          先來(lái)看一段小代碼

          #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文件里面是一些數(shù)字,如果是
          23 23? 44? 5? 23? 56?? 空格 回車
          那么讀出的結(jié)果將是多出一個(gè)56來(lái),為什么會(huì)這樣呢?
          因?yàn)閒is.eof()并沒(méi)有指向文件的末尾,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++流讀文件,文件末尾多加了空格怎么辦  回復(fù)  更多評(píng)論   

          2006-11-24 14:08 by
          我發(fā)現(xiàn)即使不在文件尾多寫個(gè)空格也會(huì)產(chǎn)生這種情況,那是怎么回事呢?

          # re: 用C++流讀文件,文件末尾多加了空格怎么辦  回復(fù)  更多評(píng)論   

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

          # re: 用C++流讀文件,文件末尾多加了空格怎么辦  回復(fù)  更多評(píng)論   

          2007-11-04 13:59 by liangent
          fin.fail()

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 姜堰市| 通海县| 永修县| 华坪县| 于田县| 莱州市| 尉犁县| 汕头市| 北流市| 水城县| 澄城县| 建昌县| 永和县| 繁峙县| 茂名市| 枣庄市| 昌乐县| 普陀区| 行唐县| 新河县| 江孜县| 洪雅县| 三穗县| 宜昌市| 宁海县| 合作市| 耒阳市| 涞水县| 大厂| 金阳县| 阳信县| 高台县| 绥宁县| 唐山市| 济宁市| 贵港市| 威远县| 台东市| 临江市| 武城县| 开封市|