看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): macOS high Sierra (Ex: Win10, Linux, ...) 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) XCode 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 小弟是c++新手,原先用ifstream逐行讀,然後stringstream分析input的token 但是覺得好像有點慢,又聽說strtok這功能,想嘗試換另一種方式 但是google一下,嘗試去做也做不太成 之後又把檔案讀進一個大char裡,然後看到delimiter(空白、'\t'、'\n')來分割 但又會落到一些 最後還是想試著用strtok,但就卡關 我的目標是這樣 我先初始化三個vector,一個存分析出來的token(vector<string>) 另外兩個是vector<int> rowVec和vector<int> columnVec分別儲存token的列和行 parse的時候,跳過空白、tab和'\n' parse出token後,儲存到vector<string>tokenVector,以及各自存列行到 rowVector和columnVector 我打算用strtok去做,但是真的想破頭都做不了 別說存row和vec,光是分析token就無法 目前只能用最慢的stringstream做了 在此想請教各位前輩高手們,謝謝 餵入的資料(Input): 3 X11 6 X12 8 X13 9 2 X22 X31 10 R 1000 E 1001 E 1000 E 1001 E 1000 E 1000 A 1006 R 1007 A 1008 R 1009 3 X21 0 X22 2 X23 5 3 X11 X13 X31 8 E 2001 E 2000 R 2002 E 2000 E 2001 R 2005 E 2001 E 2002 1 X31 2 0 3 A 3000 I 3701 A 3002 0 3 X31 X11 X22 6 R 4000 E 4000 E 4001 R 4003 R 4004 E 4002 00 00 3 R 5000 I 5987 R 5002 1 X61 2 1 X31 6 R 6000 E 6000 A 6002 A 6003 R 6004 I 6005 預期的正確結果(Expected Output): 就是每一個數字或英文token或是英文token和數字都是token 而且可以查詢其所在的row和vector 程式碼(Code):(請善用置底文網頁, 記得排版) https://ideone.com/KeFWcc 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 108.53.117.127 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1517982372.A.661.html
steve1012: strtok 不是很安全 不能用 python 先處理嗎? 02/07 15:53
steve1012: 覺得有點慢是怎麼覺得的 有測過嗎 02/07 15:54
steve1012: 可以稍微講一下是課程需求 還是練習 還是自己玩 02/07 15:56
steve1012: 稍微看了一下 原來你只是要用空白分 你要是確定只有空 02/07 16:05
steve1012: 白跟 tab 跟換行 可以用 find_first_of 跟 find_first_ 02/07 16:05
steve1012: not_of 02/07 16:05
我這是已經交出去的作業,交出去的是用stringstream,老師是沒有要求速度啦 但我想試試看strtok可以怎麼做 ※ 編輯: bulls5566 (108.53.117.127), 02/07/2018 23:02:57
uranusjr: 都用 C++ 就不要再 strtok 了拜託 02/08 14:44
hunandy14: https://ideone.com/ZBQkBn 02/11 00:25
hunandy14: 切割字串範例 02/11 00:26