作者j129008 (j129008)
看板C_and_CPP
標題Re: [問題] C++ ifstream 問題
時間Sat Aug 14 20:05:30 2010
經過我後來的修改
還是有些疑惑沒有解開
新打的程式碼:
#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
→ loveme00835:使用類別之前, 你並沒有先了解他的特性, 像是錯誤旗標 08/14 20:47
→ loveme00835:被升起, 要自己手動clear這點, 就算前面有人推文你也 08/14 20:47
→ loveme00835:沒注意到, 在用C++寫程式, 沒有讓一個變數盡可能的區 08/14 20:48
→ loveme00835:域化, 我覺得他既然能帶給你方便, 至少你也要善用這點 08/14 20:49
→ loveme00835:這是改過的程式碼, 你要了解你問題的根源, 像是: 一個 08/14 20:50
→ loveme00835:迴圈週期, 完成1.開檔2.讀檔3.關檔, 既然不同週期互 08/14 20:51
→ loveme00835:無關聯, 根本不需要共用一個ifstream物件 08/14 20:51
→ j129008:謝謝!!! I love you!!! 08/15 14:16
→ loveme00835:= = 08/15 14:18
→ j129008:樓上真是好心人 08/15 14:21