[問題] 請問如何使用未知大小的動態陣列?

看板C_and_CPP (C/C++)作者 (幻滅)時間9年前 (2016/09/04 14:59), 編輯推噓3(3017)
留言20則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 目前是想做使用者隨便輸入資料如 123,456,789 並且輸入分格符號"," 我的程式則會分別將 123放到str[0] 456放到str[1] 789放到str[2] 主是要用來做字串分割的,可是目前問題是我不知到使用者會輸入多少資料 可能如 1qaz.2wsx.3edc.4rfv 或是 978,4098,4087,04890,8409,049,5640 所以我不知道該如何去設定動態陣列的大小 我目前的想法是 先去算使用者輸入的字串數,算完後再去設定動態陣列大小 再把分割完後的字串一一的丟到陣列裡,可是這樣會造成我做了兩次運算 可能是我寫的不太好,所以請各位大大幫我看一下我的程式碼的問題 我之前是有使用vector這樣就不用計算輸入的字串多寡,可以直接將分隔完的字串 直接塞到陣列中,但是因為我們老師的需求,之後可能會用C#或是其他程式語言 而C#沒有Vector所以希望我能使用普通的陣列來做,這樣改用其他程式語言,就不太需要 改動太多程式碼。 請板友給我一些意見,謝謝各位。 程式碼(Code):(請善用置底文網頁, 記得排版) 計算輸入字串數 http://ideone.com/a13zD7 分割字串並分別存入動態陣列中 http://ideone.com/Moh4Tv -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.213.245 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1472972379.A.0F4.html

09/04 15:02, , 1F
C#也有跟vector一樣方便的東西啊,譬如List
09/04 15:02, 1F

09/04 15:04, , 2F
看 code , 是用 MFC ATL CString, 若是這樣的話,讀進來
09/04 15:04, 2F

09/04 15:05, , 3F
整個字串先放到一個 buffer , 再用 CString::Tokenize 取
09/04 15:05, 3F

09/04 15:05, , 4F
得有多少欄位,再用動態配置。至於你說的普通陣列達到這
09/04 15:05, 4F

09/04 15:06, , 5F
需求,漂亮的方法沒有。
09/04 15:06, 5F

09/04 15:15, , 6F
所以如果我要用普通陣列做的話,就只有我目前這樣嗎?
09/04 15:15, 6F

09/04 15:17, , 7F
因為我覺得我現在的寫法有點笨,我是去算找到幾個"符號"
09/04 15:17, 7F

09/04 15:18, , 8F
來計算陣列要設定多大..而不是計算有多少字串..
09/04 15:18, 8F

09/04 15:19, , 9F
因為我之後可能還需要使用到C#或是VB 所以想盡量用
09/04 15:19, 9F

09/04 15:19, , 10F
比較共通的語法,這樣之後比較好改
09/04 15:19, 10F

09/04 15:23, , 11F
有規定不能用malloc?
09/04 15:23, 11F

09/04 15:39, , 12F
換語言一般也是像你這樣做,頂多一邊 token一邊 push back
09/04 15:39, 12F

09/04 16:11, , 13F
沒有,他是希望說我用相近一點的語法 這樣之後或別的程
09/04 16:11, 13F

09/04 16:11, , 14F
式語言做一些類似的事情的時候我才不用花太多時間去修
09/04 16:11, 14F

09/04 16:12, , 15F
語法整合,可以更快的做其他的事情
09/04 16:12, 15F

09/04 16:13, , 16F
不過如果目前是我這樣的做法就OK,沒有更好的方法的話
09/04 16:13, 16F

09/04 16:13, , 17F
那我就先這樣了,先去弄其他的部分
09/04 16:13, 17F

09/04 16:14, , 18F
我是比較想要把那兩段搜尋"符號"位置的程式碼變成一段
09/04 16:14, 18F

09/04 16:14, , 19F
不然這樣變成有兩段幾乎再做一樣的事情,不過我還想不
09/04 16:14, 19F

09/04 16:14, , 20F
到太好的用法...所以還是只能分成兩段來做
09/04 16:14, 20F
文章代碼(AID): #1NoyPR3q (C_and_CPP)
文章代碼(AID): #1NoyPR3q (C_and_CPP)