[問題]

看板C_and_CPP (C/C++)作者 (Light)時間12年前 (2012/09/09 01:31), 編輯推噓5(5018)
留言23則, 10人參與, 最新討論串10/14 (看更多)
主要是利用linux 的gcc 例如有一個字串內容為0123456789 我想分別取出 012 3456 789 一開始想法是想利用strtok這個函數 但是他會破壞原字串 不知道有沒有更好的辦法呢?(不考慮用陣列迴圈方式取出值) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.191.134 ※ 編輯: wind00962 來自: 118.168.191.134 (09/09 01:32)

09/09 01:47, , 1F
string::copy string::substr strncpy strstr都可以
09/09 01:47, 1F

09/09 01:47, , 2F
可以找找 www.cplusplus.com
09/09 01:47, 2F

09/09 01:51, , 3F
strstr+1
09/09 01:51, 3F
不好意思,我詳細說明我要的內容好了,主要是要做出取代子字串題目,例如我搜尋3456, 3456會被我指定的的其他字串取代,所以我才會想要去抓012跟789,最後在接起來變成答 案,但是我不會用strstr去抓789,因為搜尋東西是不固定的。 ※ 編輯: wind00962 來自: 118.168.191.134 (09/09 02:56)

09/09 03:26, , 4F
為什麼要抓 789? 你知道 "3456" 的位置和長度
09/09 03:26, 4F

09/09 03:26, , 5F
不就知道前後字串的位置?再接起來就好啦?
09/09 03:26, 5F

09/09 04:20, , 6F
破壞原字串…建一個buffer把原字串複製過去如何?
09/09 04:20, 6F

09/09 06:25, , 7F
如果考慮到將 "3456" 取代成 "ab" 或 "abcdefg",那不可能
09/09 06:25, 7F

09/09 06:25, , 8F
不破壞原字串,甚至直接再弄個 buffer 複製是較簡便方法.
09/09 06:25, 8F

09/09 06:30, , 9F
再補一下,你原本的想法會造成 pointer 失效..
09/09 06:30, 9F

09/09 08:23, , 10F
直接clone+1
09/09 08:23, 10F

09/09 10:28, , 11F
為何不考慮用陣列加迴圈的方式,字串函式內部還是迴圈來作的
09/09 10:28, 11F

09/09 10:51, , 12F
string::find + string::replace ?
09/09 10:51, 12F
目前找到可以成功方法,例如1234567890我要把567取代成ABC那就是先用startok把1234 擷取出來,NULL剩67890,再用一次startok把67取出,抓出NULL值(890)最後三個字串聯結 就是答案,不過這樣做會太複雜嗎? 主要是要取代的值不一定長度相同 ※ 編輯: wind00962 來自: 118.168.191.134 (09/09 11:07)

09/09 12:00, , 13F
隨手拿到把鈍刀就只用那鈍刀,執迷不悟。隨便你。
09/09 12:00, 13F

09/09 12:01, , 14F
原來自己寫含數來取代內建的是很困難的事
09/09 12:01, 14F

09/09 12:32, , 15F
自己寫配內建更強阿 程式這麼大發展性
09/09 12:32, 15F

09/09 13:55, , 16F
@k38~ 重點是這問題分明是重寫一個比 strtok 快很多啊!!
09/09 13:55, 16F

09/09 14:27, , 17F
這用陣列+迴圈處理應該很簡單吧
09/09 14:27, 17F

09/09 21:16, , 18F
API不看也不查 一堆版友熱心建議也不看 奇葩!
09/09 21:16, 18F
謝謝大家的指導,其實我一開始也是用簡單迴圈下去做就出來了,但是教授希望叫我用函數 下去寫,我也覺得很奇怪 ※ 編輯: wind00962 來自: 36.226.52.142 (09/09 21:29)

09/10 02:46, , 19F
關鍵字和連結都給你了 如果直接給你原始碼對你的學習沒幫助
09/10 02:46, 19F

09/10 02:47, , 20F
如果沒我沒會錯意 string::replace可以達到你的需求
09/10 02:47, 20F

09/10 02:47, , 21F
http://www.cplusplus.com 有很淺顯的原始碼範例
09/10 02:47, 21F

09/10 02:48, , 22F
瞭解函式怎麼使用 在練習怎麼把string::find的回傳值給
09/10 02:48, 22F

09/10 02:48, , 23F
string::replace
09/10 02:48, 23F
文章代碼(AID): #1GIu4CdY (C_and_CPP)
討論串 (同標題文章)
完整討論串 (本文為第 10 之 14 篇):
16年前, 02/17
15年前, 03/04
15年前, 03/13
15年前, 05/10
3
13
15年前, 05/12
15年前, 05/26
14年前, 08/15
12年前, 05/23
2
6
12年前, 09/06
5
23
12年前, 09/09
文章代碼(AID): #1GIu4CdY (C_and_CPP)