看板 C_and_CPP 關於我們 聯絡資訊
VS 2017 struct XXX{ string name[10]; }; string list = {"A1", "A2", ......}; void func(){ struct XXX p; for loop to fill p.name[i] for i = 0 to 10-1 call send(p); } void send(struct XXX &p){ string str = ""; str.append("{") for(int i = 0; i < len; i++){ str.append(list[i]); str.append(":"); str.append(p.name[i]); // line HIGHLINE str.append(","); // 執行到這行, 結果沒有被成功 append } str.back(); str.append("}"); loop 跑完 結果還是只有 {A1:TaipeiMainStartion 完全看不出來問題的方向 line HIGHLIN 將這行改成 str.append("55555"); 反而整個字串就成功了 若我改成用 operator + 一樣的結果 QQQQQQQ 有高手前輩幫幫忙嗎~~ 感謝唷 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.32.115 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1569401163.A.42C.html ※ 編輯: OfficeGL (111.71.32.115 臺灣), 09/25/2019 16:54:08
idiont: 你沒附上完整程式碼有點難通靈09/25 17:27
idiont: 你迴圈的len是什麼東西09/25 17:30
idiont: p的內容又是什麼09/25 17:30
len=10; p.name 內容是10個字串 TaipeiMainStation, Nangan, Taoyuan,..等10個 string
kobe8112: . VS ->09/25 17:30
kobe8112: 宣告 void send(struct XXX *p) 就用 p->name[i]09/25 17:39
kobe8112: 宣告 void send(struct XXX p) 就用 p.name[i]09/25 17:39
嗯嗯,我是用reference void send(struct XXX &p); 透過p.name[i]取得 ※ 編輯: OfficeGL (111.71.32.115 臺灣), 09/25/2019 17:47:22
ko27tye: highline那行改了後會變成{A1:55555,A2:55555, ...}是嗎09/25 18:01
ko27tye: 不改就只有{A1:TaipeiMainStartion 然後跳出迴圈?09/25 18:02
對的,所以我很無頭緒,迴圈其實有繼續跑到底 但是str不會再被更新,連第一次迴圈的最後,都沒有被加上去 ※ 編輯: OfficeGL (111.71.32.115 臺灣), 09/25/2019 18:09:37
steve8625: 照你描述只剩懷疑塞給p.name的code有問題, 方便貼嗎09/25 18:13
ko27tye: 我猜可能是struct的name陣列沒初始化讀到怪東西 先用 09/25 18:15
這邊應該沒問題,因為我單步驟執行,看變數內容是正確的 感覺跟c++ string有關係,我很一般的用 char buffer[] 初始化 name陣列 例如: p.name[i]=string(buffer+offset, lengthofstring) ※ 編輯: OfficeGL (111.71.32.115 臺灣), 09/25/2019 18:18:33
ko27tye: memset初始化 或直接用vector儲存字串 09/25 18:16
idiont: 覺得是你的buffer或p.name沒處理好 09/25 18:53
ctrlbreak: 你用bind去call的嗎 09/25 22:11
Gway: string list = {"A1", "A2", ......}; 改成string list[] = 09/26 06:24
Gway: {"A1", "A2", ......}; 09/26 06:24
kiedveian: 我猜是 TaipeiMainStartion\0 10/02 07:34
yvb: 可能是類似這樣的情況? : https://ideone.com/hEAizi 10/05 10:20