[問題] C++ 字串切割

看板C_and_CPP作者 (家家)時間13年前 (2012/08/21 17:34), 編輯推噓6(6020)
留言26則, 14人參與, 最新討論串1/2 (看更多)
請問一下,C++要切割字串 我目前是用strtok 請問strtok可以把分隔符號設成"字串"嗎? 或是有什麼方法可以做字串切割,而分隔符號是用字串的呢? 例如: 字串: 123aba456 將分隔字串設為'ab' 切割之後結果為 123 a456 謝謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.239.247 ※ 編輯: mmm321 來自: 140.113.239.247 (08/21 17:35) ※ 編輯: mmm321 來自: 140.113.239.247 (08/21 17:35)

08/21 17:41, , 1F
我也想知道xd
08/21 17:41, 1F

08/21 17:47, , 2F
strtok()分隔是吃指標,所以可以放"ab"
08/21 17:47, 2F

08/21 17:48, , 3F
應該吧,剛剛去看得
08/21 17:48, 3F

08/21 17:48, , 4F
可是這樣一來就變成 123 456 了不是嗎?
08/21 17:48, 4F

08/21 17:49, , 5F
那用看看string::find_first_of()去切呢?
08/21 17:49, 5F

08/21 17:53, , 6F
strtok()吃的字串是「用這之中的任何一個字分隔」
08/21 17:53, 6F

08/21 17:53, , 7F
find_first_of應該是最簡單的方法
08/21 17:53, 7F

08/21 17:54, , 8F
自己寫會不會比較快XD
08/21 17:54, 8F

08/21 18:01, , 9F
find_first_of() 查了一下,也是用之中任一char ?
08/21 18:01, 9F

08/21 18:15, , 10F
自己寫個func比較char pattern
08/21 18:15, 10F

08/21 18:19, , 11F
strstr ?
08/21 18:19, 11F

08/21 18:20, , 12F
記錯了,應該用string:find()
08/21 18:20, 12F

08/21 18:21, , 13F
strstr()的功能差不多
08/21 18:21, 13F

08/21 18:22, , 14F

08/21 19:59, , 15F
環境允許的話直接boost搞定吧 內建的都好麻煩..
08/21 19:59, 15F

08/21 20:05, , 16F
boost::algorithm::split
08/21 20:05, 16F

08/21 22:41, , 17F
boost 的話我是推薦用 regex, 看你是要定義切出來的
08/21 22:41, 17F

08/21 22:42, , 18F
token rule 還是 separators rule 皆可, 有強者每種版
08/21 22:42, 18F

08/21 22:43, , 19F
本都寫出來我就不騙文章了xD http://ppt.cc/QpjX 但對
08/21 22:43, 19F

08/21 22:44, , 20F
看 code 的人而言我覺得最好還是把 token rule 嵌在程
08/21 22:44, 20F

08/21 22:45, , 21F
式碼內, 因為那才是你邏輯的核心, 反而 separators 不
08/21 22:45, 21F

08/21 22:45, , 22F
是那麼重要的
08/21 22:45, 22F

08/21 22:47, , 23F
最好還是配合官方文件服用 http://ppt.cc/1Qub 剛剛看
08/21 22:47, 23F

08/21 22:48, , 24F
了 g++ 的支援才發現好慢啊 xDD
08/21 22:48, 24F

08/22 00:16, , 25F
g++ 還沒加作 regex 的實作,只能期待 clang 了
08/22 00:16, 25F

08/22 09:41, , 26F
謝謝大家 ^^
08/22 09:41, 26F
文章代碼(AID): #1GCrOv4G (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GCrOv4G (C_and_CPP)