[問題] 有關於輸出txt檔檔名問題

看板C_and_CPP (C/C++)作者 ( )時間15年前 (2010/10/14 16:42), 編輯推噓15(15037)
留言52則, 14人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 小弟之前有爬過文章了 無奈c++底子不好 現在希望可以產生多個txt檔 for(int i2=1 ;i2<=5 ;i2++) { _____希望這邊可以輸出 output1.txt | output2.txt V . ofstream outFile("output.txt"); . output x.txt //---------------中間是輸出的檔案------------------------------- for(int g2=0 ; g2<=6 g2++) { outFile <<predecessor << ","<<cost[f2][1] << endl; } //------------------------------------------------------------ } 所以我這邊寫一個i2的迴圈 希望檔名可以從1~~5輸出5個txt檔 無奈不知這邊該如何修改 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) c++ 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.16.55

10/14 16:42, , 1F
感謝高手回應
10/14 16:42, 1F

10/14 16:46, , 2F
"output"+i2+".txt" <在java這麼寫就可以了
10/14 16:46, 2F

10/14 16:48, , 3F
不好意思 我使用的是c++不過好像這樣不太行耶
10/14 16:48, 3F

10/14 16:52, , 4F
char buf[20] = "outputx.txt";
10/14 16:52, 4F

10/14 16:53, , 5F
*(buf+6) = i2 + '0';
10/14 16:53, 5F

10/14 16:53, , 6F
outFile(buf);
10/14 16:53, 6F

10/14 16:54, , 7F
喔天啊,sprintf就好了啦
10/14 16:54, 7F

10/14 17:04, , 8F
sprintf(buf, "output%1d.txt", i2);
10/14 17:04, 8F

10/14 17:15, , 9F
osstream ...
10/14 17:15, 9F

10/14 17:23, , 10F
stupid0319大的做法超強 XD
10/14 17:23, 10F

10/14 17:34, , 11F
我還沒學會 sprintf 之前也是用 stupid0319 那招
10/14 17:34, 11F

10/14 17:34, , 12F
效率說不定還比較好 XDDD 只是沒啥彈性而言
10/14 17:34, 12F

10/14 17:43, , 13F
sprintf(buf,"output%0*d.txt",3,i2); 這算有彈性吧?
10/14 17:43, 13F

10/14 17:44, , 14F
我是說 stupid0319 那招沒彈性啦 XD
10/14 17:44, 14F

10/14 17:45, , 15F
誤會一場 XD
10/14 17:45, 15F

10/14 17:45, , 16F
純推osstream
10/14 17:45, 16F

10/14 18:00, , 17F
http://codepad.org/CIctC3h1 C++只是比較喜歡裝B (矜持)
10/14 18:00, 17F

10/14 19:21, , 18F
推樓上..原來string還可以這麼用..
10/14 19:21, 18F

10/14 20:01, , 19F
new String("output") + i + new String(".txt") 二樓
10/14 20:01, 19F

10/14 20:02, , 20F
打的其實是這樣, 然後再隱含呼叫 i 的 toString 方法,
10/14 20:02, 20F

10/14 20:03, , 21F
差只差在這些String物件是放在字串池還是還是堆積中
10/14 20:03, 21F

10/14 20:04, , 22F
就會做的動作上來說, 根本是不同的! 不要拿出來誤導別
10/14 20:04, 22F

10/14 20:04, , 23F
人, 在 C++ 比較快的方法是用 string 物件的operator+
10/14 20:04, 23F

10/14 20:05, , 24F
做一個串接式的語法 : string("output") + itoa( i )
10/14 20:05, 24F

10/14 20:06, , 25F
+ ".txt", 從左而右持續生成新的string物件再輸出, 不
10/14 20:06, 25F

10/14 20:07, , 26F
過因為itoa 這函式不是標準的, 所以用sstream才是最正
10/14 20:07, 26F

10/14 20:07, , 27F
式的方法
10/14 20:07, 27F

10/14 20:46, , 28F

10/14 20:47, , 29F
他繼承了iostream的<<所以對很多型態都可以插入,只是目的
10/14 20:47, 29F

10/14 20:47, , 30F
地不像cout是插入到螢幕,而是插入資料到 string
10/14 20:47, 30F

10/14 20:55, , 31F
我的看法是C++要向後相容C語言,原本的"output"在C語言裡
10/14 20:55, 31F

10/14 20:56, , 32F
不是一個物件,那+可以運作,是要透過運算子重載,所以非
10/14 20:56, 32F

10/14 20:57, , 33F
物件的"output"跟整數,兩個是不能重載處理的,要講原則
10/14 20:57, 33F

10/14 20:58, , 34F
不過我覺得就算講再多原則, 還是會有人說「我覺得很難
10/14 20:58, 34F

10/14 20:59, , 35F
用」試都沒試也甚至不會試就把你的意見駁回, 講再多也
10/14 20:59, 35F

10/14 20:59, , 36F
沒用
10/14 20:59, 36F

10/14 21:00, , 37F
大家價值觀不同嘛
10/14 21:00, 37F

10/14 21:01, , 38F
等等可能會有「用string就不能使用cstring裡的函式」
10/14 21:01, 38F

10/14 21:01, , 39F
這種論調
10/14 21:01, 39F

10/14 21:06, , 40F
樓上的cstring是指 MFC-CString?(雖覺推論似乎不成立..
10/14 21:06, 40F

10/14 21:09, , 41F
是c++的cstring
10/14 21:09, 41F

10/14 21:12, , 42F
cstring = string.h + namespace std + using
10/14 21:12, 42F

10/14 21:13, , 43F
哈.看懂什麼意思了.中了CString的毒 XD
10/14 21:13, 43F

10/14 23:12, , 44F
其實能達到目的就好,不必這樣的...
10/14 23:12, 44F

10/14 23:12, , 45F
倒是這個問題有沒有打算收錄精華區 XD 看過好多次了說
10/14 23:12, 45F

10/14 23:20, , 46F
我會用 stringstream 硬幹 XD
10/14 23:20, 46F

10/14 23:26, , 47F
原來purpose大已經推過了
10/14 23:26, 47F

10/14 23:27, , 48F
ofstream outFile((name.str()).c_str());
10/14 23:27, 48F

10/14 23:28, , 49F
樓上為什麼要多那層括號?
10/14 23:28, 49F

10/15 00:28, , 50F
j大的建議 我聽到了 XD 我今天看到這篇也有這種想法...
10/15 00:28, 50F

10/15 00:43, , 51F
題外話..版規第三條可以更新了 XD
10/15 00:43, 51F

10/15 01:53, , 52F
Updated.
10/15 01:53, 52F
文章代碼(AID): #1Cji9Q1_ (C_and_CPP)
文章代碼(AID): #1Cji9Q1_ (C_and_CPP)