Re: [問題] C++ ifstream 問題

看板C_and_CPP (C/C++)作者 (j129008)時間15年前 (2010/08/14 20:05), 編輯推噓0(0011)
留言11則, 2人參與, 最新討論串2/2 (看更多)
經過我後來的修改 還是有些疑惑沒有解開 新打的程式碼: #include<iostream> #include<fstream> using namespace std; ifstream InputFile; char list[10][20]; int j=0,file_num=3; const int line=0; //list[2][] 存著file1.txt int main(){ list[line][0]='f'; list[line][1]='i'; list[line][2]='l'; list[line][3]='e'; list[line][4]='1'; list[line][5]='.'; list[line][6]='t'; list[line][7]='x'; list[line][8]='t'; list[line][9]='\0'; //如果說是\0的問題的話滿奇怪的 for(j=0;j<=file_num;j++){ // 按順序打開list[0~3]並讀入 InputFile.open(list[j],ifstream::in); //讀入 cout<<list[j]; //檢查到底list[j]裡存了啥 while(InputFile.good())cout<<(char)InputFile.get(); getchar(); } /* 執行步驟: 讀入並印出list[0] (空) 讀入並印出list[1] (空) 讀入並印出list[2] (file1.txt) 印出file1.txt 印出file1.txt的內容 讀入並印出list[3] (空) close InputFile */ InputFile.close(); } 問題: 為什麼明明list[2]讀的到東西沒錯 加上如果是\0的問題 我在結尾加上了\0 還是沒有用阿 可是卻打不開檔案? 如果真的是這樣的話 改成list[0]存放file1.txt卻可以成功? 比較奇怪的是 為什麼我把for loop改掉 改成list[line]就沒有問題了???? 就可以正常的印出 實際上這是是個測試檔案 原版的程式 必須用到for loop 希望能得到好心人的解答!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.79.203

08/14 20:47, , 1F
使用類別之前, 你並沒有先了解他的特性, 像是錯誤旗標
08/14 20:47, 1F

08/14 20:47, , 2F
被升起, 要自己手動clear這點, 就算前面有人推文你也
08/14 20:47, 2F

08/14 20:48, , 3F
沒注意到, 在用C++寫程式, 沒有讓一個變數盡可能的區
08/14 20:48, 3F

08/14 20:49, , 4F
域化, 我覺得他既然能帶給你方便, 至少你也要善用這點
08/14 20:49, 4F

08/14 20:50, , 5F
這是改過的程式碼, 你要了解你問題的根源, 像是: 一個
08/14 20:50, 5F

08/14 20:51, , 6F
迴圈週期, 完成1.開檔2.讀檔3.關檔, 既然不同週期互
08/14 20:51, 6F

08/14 20:51, , 7F
無關聯, 根本不需要共用一個ifstream物件
08/14 20:51, 7F

08/14 20:52, , 8F

08/15 14:16, , 9F
謝謝!!! I love you!!!
08/15 14:16, 9F

08/15 14:18, , 10F
= =
08/15 14:18, 10F

08/15 14:21, , 11F
樓上真是好心人
08/15 14:21, 11F
文章代碼(AID): #1CPeQDhC (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CPeQDhC (C_and_CPP)