[問題] C++ string append 一直失敗?

作者: OfficeGL (努力上班族)   2019-09-25 16:46:01
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
有高手前輩幫幫忙嗎~~
感謝唷
作者: idiont (supertroller)   2019-09-25 17:27:00
你沒附上完整程式碼有點難通靈你迴圈的len是什麼東西p的內容又是什麼
作者: kobe8112 (小B)   2019-09-25 17:30:00
. VS ->宣告 void send(struct XXX *p) 就用 p->name[i]宣告 void send(struct XXX p) 就用 p.name[i]
作者: ko27tye (好滋好滋)   2019-09-25 18:01:00
highline那行改了後會變成{A1:55555,A2:55555, ...}是嗎不改就只有{A1:TaipeiMainStartion 然後跳出迴圈?
作者: steve8625 (HaHaHa(TW))   2019-09-25 18:13:00
照你描述只剩懷疑塞給p.name的code有問題, 方便貼嗎
作者: ko27tye (好滋好滋)   2019-09-25 18:15:00
我猜可能是struct的name陣列沒初始化讀到怪東西 先用memset初始化 或直接用vector儲存字串
作者: idiont (supertroller)   2019-09-25 18:53:00
覺得是你的buffer或p.name沒處理好
作者: ctrlbreak   2019-09-25 22:11:00
你用bind去call的嗎
作者: Gway (我愛的你 也愛我 好嗎?)   2019-09-26 06:24:00
string list = {"A1", "A2", ......}; 改成string list[] ={"A1", "A2", ......};
作者: kiedveian (極地之星光)   2019-10-02 07:34:00
我猜是 TaipeiMainStartion\0
作者: yvb   2019-10-05 10:20:00
可能是類似這樣的情況? : https://ideone.com/hEAizi

Links booklink

Contact Us: admin [ a t ] ucptt.com