Re: [問題] 讀取檔案內的資料,稍做修改,再輸出成 …

看板C_and_CPP作者 (guigui)時間14年前 (2010/04/12 11:43), 編輯推噓1(104)
留言5則, 1人參與, 最新討論串1/1
你想要的輸出是 假設N=5 輸出: a1[b1] a2[b2] a3[b3] a4[b4] a5[b5] 如果是的話,以下是我的想法,參考看看囉^^ #include<string> #include<fstream> string in = "abc.txt"; string s = " " ; string s_sub = " " ; int N = 0 ; int M = 0 ; //讀檔 不打算全部讀完 只要抓出 N、M 即可 ifstream fin; fin.open( in.c_str() ); if( !fin ) cout << " File Error!!" << endl; while( !fin.eof() ) { fin >> s ; N = atoi(s.c_str()); //字串轉整數 fin >> s ; s_sub = s.substr(0,1); // 切字 while((s_sub == "a" )||(s_sub == "b")) { fin >> s ; s_sub = s.substr(0,1); } M = atoi(s.c_str()); // 找到M就停止讀檔 break; } fin.close(); ofstream fout("abc_out.txt"); for(int i =0; i<N; i++) { fout << "a" << i+1 << "[b" << i+1 << "]" << endl; } for(int i =0; i<M; i++) { fout << "c" << i+1 << "[d" << i+1 << "]" << endl; } ※ 引述《Zoxge (Zoxge)》之銘言: : 遇到的問題: (題意請描述清楚) : 讀取的檔案主要是這樣的格式: : N : a1 b1 : a2 b2 : . : . : . : aN bN : M : c1 d1 : c2 d2 : . : . : . : cM dM : (N與M都是"正整數") : 現在要讀取檔案之後,把內容稍微做修改 : N的部份要寫成aN[bN] : M的部份要寫成cM{dM} : 然後輸出成另一個檔案 : 檔案的輸入與輸出方面沒有問題 : 小弟的主要問題在於內容修改的部份 : 請見有問題的code:這個部份 : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : dev-C++ : 有問題的code: (請善用置底文標色功能) : 目前小弟想到是用ifstream與ofstream來做 : 在int main()這個function裡面: : string s; : ifstream fin("abc.in"); : ofstream fout("abc.out"); : while(!fin.eof()) : { : getline(fin,s); : fout << s << endl; : } : 但是用getline的話是一次讀一行 : 好像沒辦法把格式修改成想要的aN[bN] cM{dM}這樣子 : 而且我想應該要有個機制分別讀取N和M,然後分別用for迴圈來run : 感覺這個問題對程式寫手來說應該很容易 : 但是小弟的C++功力實在很淺,想不出來程式到底該怎麼寫 : 麻煩板上高手解惑了 : 感激不盡啊!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.101.39

04/12 13:10, , 1F
謝謝你 我試了一下 N的部份可以正常顯示出來
04/12 13:10, 1F

04/12 13:11, , 2F
但是M的部份只會出現c1{d1},後面的不會再出現
04/12 13:11, 2F

04/12 13:12, , 3F
另外,想再請問一下,如果我的aN bN cM dM這些字串並不是那
04/12 13:12, 3F

04/12 13:13, , 4F
麽的規則,而是隨便的字串(完全沒規則),例如asd_zx_1這樣,
04/12 13:13, 4F

04/12 13:14, , 5F
那麼程式又要怎麼改寫才對呢? 麻煩高手們給予指教了 感恩
04/12 13:14, 5F
文章代碼(AID): #1BmfR-tA (C_and_CPP)