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

作者: abab7974 (幻滅)   2016-09-04 14:59:35
開發平台(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
作者: james732 (好人超)   2016-09-04 15:02:00
C#也有跟vector一樣方便的東西啊,譬如List
作者: EdisonX (卡卡獸)   2016-09-04 15:04:00
看 code , 是用 MFC ATL CString, 若是這樣的話,讀進來整個字串先放到一個 buffer , 再用 CString::Tokenize 取得有多少欄位,再用動態配置。至於你說的普通陣列達到這需求,漂亮的方法沒有。
作者: abab7974 (幻滅)   2016-09-04 15:15:00
所以如果我要用普通陣列做的話,就只有我目前這樣嗎?因為我覺得我現在的寫法有點笨,我是去算找到幾個"符號"來計算陣列要設定多大..而不是計算有多少字串..因為我之後可能還需要使用到C#或是VB 所以想盡量用比較共通的語法,這樣之後比較好改
作者: Sidney0503 (Sidney0503)   2016-09-04 15:23:00
有規定不能用malloc?
作者: EdisonX (卡卡獸)   2016-09-04 15:39:00
換語言一般也是像你這樣做,頂多一邊 token一邊 push back
作者: abab7974 (幻滅)   2016-09-04 16:11:00
沒有,他是希望說我用相近一點的語法 這樣之後或別的程式語言做一些類似的事情的時候我才不用花太多時間去修語法整合,可以更快的做其他的事情不過如果目前是我這樣的做法就OK,沒有更好的方法的話那我就先這樣了,先去弄其他的部分我是比較想要把那兩段搜尋"符號"位置的程式碼變成一段不然這樣變成有兩段幾乎再做一樣的事情,不過我還想不到太好的用法...所以還是只能分成兩段來做

Links booklink

Contact Us: admin [ a t ] ucptt.com