看板 C_and_CPP 關於我們 聯絡資訊
請問一下,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)
diabloevagto:我也想知道xd 08/21 17:41
tjjh89017:strtok()分隔是吃指標,所以可以放"ab" 08/21 17:47
tjjh89017:應該吧,剛剛去看得 08/21 17:48
maerdimer:可是這樣一來就變成 123 456 了不是嗎? 08/21 17:48
tjjh89017:那用看看string::find_first_of()去切呢? 08/21 17:49
azureblaze:strtok()吃的字串是「用這之中的任何一個字分隔」 08/21 17:53
azureblaze:find_first_of應該是最簡單的方法 08/21 17:53
singlovesong:自己寫會不會比較快XD 08/21 17:54
BlazarArc:find_first_of() 查了一下,也是用之中任一char ? 08/21 18:01
sanctitysky:自己寫個func比較char pattern 08/21 18:15
CaptainH:strstr ? 08/21 18:19
azureblaze:記錯了,應該用string:find() 08/21 18:20
azureblaze:strstr()的功能差不多 08/21 18:21
Fenikso:環境允許的話直接boost搞定吧 內建的都好麻煩.. 08/21 19:59
legendmtg:boost::algorithm::split 08/21 20:05
loveme00835:boost 的話我是推薦用 regex, 看你是要定義切出來的 08/21 22:41
loveme00835:token rule 還是 separators rule 皆可, 有強者每種版 08/21 22:42
loveme00835:本都寫出來我就不騙文章了xD http://ppt.cc/QpjX 但對 08/21 22:43
loveme00835:看 code 的人而言我覺得最好還是把 token rule 嵌在程 08/21 22:44
loveme00835:式碼內, 因為那才是你邏輯的核心, 反而 separators 不 08/21 22:45
loveme00835:是那麼重要的 08/21 22:45
loveme00835:最好還是配合官方文件服用 http://ppt.cc/1Qub 剛剛看 08/21 22:47
loveme00835:了 g++ 的支援才發現好慢啊 xDD 08/21 22:48
legnaleurc:g++ 還沒加作 regex 的實作,只能期待 clang 了 08/22 00:16
mmm321:謝謝大家 ^^ 08/22 09:41