[問題] 分割輸入字串

看板C_and_CPP (C/C++)作者 (白飯)時間15年前 (2010/11/15 19:15), 編輯推噓2(2015)
留言17則, 5人參與, 最新討論串1/1
不知道為什麼一直出錯 還是怎麼樣 是我太笨了嗎= = 查了很多資料 還搞不出來我想要的 我問題是 我需要分割輸入的字串 但是會一直跑出問題 有人知道為什麼嗎Orz 把輸入字串 分割空格 寫法大概是 string data,tmp[7]; cin>>data; tmp[0]=strtok((char *)data.c_str()," "); tmp[1]=strtok(NULL," "); .... 有7筆資料 可是run的時候 因為加這幾行 導致執行中止出現回報不回報問題視窗= = 難道strtok分割只能運用到 讀寫檔分割字串 不能分割輸入的字串? ~.~ 請益各位大大囉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.216.195

11/15 19:17, , 1F
或許你可以考慮改用 stringstream ?
11/15 19:17, 1F

11/15 19:21, , 2F
輸入部分改用 stringstream?? 沒教過這個方法~.~
11/15 19:21, 2F

11/15 19:24, , 3F
老師有教怎麼談戀愛嗎
11/15 19:24, 3F

11/15 19:27, , 4F
c_str()出來的const char*吧? strtok會變動到第一個參數
11/15 19:27, 4F

11/15 19:27, , 5F
裡面的值
11/15 19:27, 5F

11/15 19:32, , 6F
樓上我還是不懂 如果strtok string 如果沒有轉型態會有
11/15 19:32, 6F

11/15 19:32, , 7F
問題
11/15 19:32, 7F

11/15 19:36, , 8F
data.c_str()的型態是const char* 像是...常數 可是
11/15 19:36, 8F

11/15 19:37, , 9F
strtok他會去把要切割的位置改成 '\0'
11/15 19:37, 9F

11/15 19:39, , 10F
http://0rz.tw/4h4LI 參考一下範例
11/15 19:39, 10F

11/15 20:35, , 11F
char arr[64]; strcpy(arr,data.c_str());
11/15 20:35, 11F

11/15 20:35, , 12F
接下來 strtok 就拿 arr 去切,這樣也行
11/15 20:35, 12F

11/15 20:36, , 13F
那個長度[64]只是舉例,你可以改成適合的
11/15 20:36, 13F

11/15 23:05, , 14F
strtok ... 我不用那種會亂偷改我輸入的函式
11/15 23:05, 14F

11/15 23:05, , 15F

11/16 00:03, , 16F
順帶一提當你使用了轉型, 可能正在用不好的 framework
11/16 00:03, 16F

11/16 00:04, , 17F
在寫程式, 也可能正在使用會讓程式炸掉的方法
11/16 00:04, 17F
文章代碼(AID): #1CuHPgpx (C_and_CPP)
文章代碼(AID): #1CuHPgpx (C_and_CPP)