[问题] 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