[問題] C++ 切字串 token 的方法

看板C_and_CPP作者 (Rex)時間14年前 (2010/03/09 23:30), 編輯推噓4(405)
留言9則, 6人參與, 最新討論串1/1
最近在練習 C++ 的讀檔和切字串 (切token) 想請問除了使用 C 的 strtok 外還有什麼好方法嗎? 會這樣問是因為爬文有看到 C-style string 跟 C++ string 混用好像不太好? (目前不知 C-style casting 的意義 @@) 若讀檔使用 getline 會面臨兩種版本選擇 1. char 的版本 + strtok 沒問題 (看起來應該像純C,除了getline) 但這是 C-style string ? 2. string 版本 + strtok (看起來應該像混用 ...) string 轉成 char 就有點麻煩,而且是 const 型態, 要另外用 strcpy 一份出來用 ... 所以想問,有純 C++ 的方式嗎? 高手都是怎麼處理這種問題的阿? (純手工打造,我只能想到 char 的方式一個字元一個字元的去處理...) (跟某些語言比,實在有點想嫌棄strtok,但又想圖方便不想手工打造...) 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.241.158

03/09 23:36, , 2F
隨手Google到的, 記得就是用stringstream....@_@"
03/09 23:36, 2F

03/09 23:40, , 3F
sstream 還不錯用XD
03/09 23:40, 3F

03/09 23:42, , 4F
喔喔,謝謝V大和d大給的建議和關鍵字。
03/09 23:42, 4F

03/09 23:45, , 5F
我也推薦用 sstream 就好了 O_O 真的很慢不能接受再用別的
03/09 23:45, 5F

03/10 00:22, , 6F
那就boost.stringalgo裡的split吧...
03/10 00:22, 6F
還想請問 sstream 可以一次依據多個 delimiter 切字串嗎? 像 strtok(str, "[A-Z] \n\r\t") 這樣? 目前只知道 sstream 搭配 getline 的方式,但這一次只能用一個字元去處理 EX : getline(ss, token, ',') ※ 編輯: henry035 來自: 140.113.241.158 (03/10 15:15)

03/11 00:15, , 7F
自己寫? 我是比較習慣用strsep不過有些系統沒有
03/11 00:15, 7F

03/11 00:16, , 8F
沒有的話可以自己用index()做出來 index好像也是有些系統
03/11 00:16, 8F

03/11 00:16, , 9F
沒有 可以參考http://0rz.tw/zXiZU 底下的strsep/index
03/11 00:16, 9F
文章代碼(AID): #1BbccCnr (C_and_CPP)