作者OfficeGL (妤欣)
看板C_and_CPP
标题[问题] C++ string append 一直失败?
时间Wed Sep 25 16:46:01 2019
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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1569401163.A.42C.html
※ 编辑: OfficeGL (111.71.32.115 台湾), 09/25/2019 16:54:08
1F:→ idiont: 你没附上完整程式码有点难通灵09/25 17:27
2F:→ idiont: 你回圈的len是什麽东西09/25 17:30
3F:→ idiont: p的内容又是什麽09/25 17:30
len=10; p.name 内容是10个字串
TaipeiMainStation, Nangan, Taoyuan,..等10个 string
4F:→ kobe8112: . VS ->09/25 17:30
5F:→ kobe8112: 宣告 void send(struct XXX *p) 就用 p->name[i]09/25 17:39
6F:→ 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
7F:推 ko27tye: highline那行改了後会变成{A1:55555,A2:55555, ...}是吗09/25 18:01
8F:→ ko27tye: 不改就只有{A1:TaipeiMainStartion 然後跳出回圈?09/25 18:02
对的,所以我很无头绪,回圈其实有继续跑到底
但是str不会再被更新,连第一次回圈的最後,都没有被加上去
※ 编辑: OfficeGL (111.71.32.115 台湾), 09/25/2019 18:09:37
9F:推 steve8625: 照你描述只剩怀疑塞给p.name的code有问题, 方便贴吗09/25 18:13
10F:推 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
11F:→ ko27tye: memset初始化 或直接用vector储存字串 09/25 18:16
12F:→ idiont: 觉得是你的buffer或p.name没处理好 09/25 18:53
13F:→ ctrlbreak: 你用bind去call的吗 09/25 22:11
14F:推 Gway: string list = {"A1", "A2", ......}; 改成string list[] = 09/26 06:24
15F:→ Gway: {"A1", "A2", ......}; 09/26 06:24
16F:→ kiedveian: 我猜是 TaipeiMainStartion\0 10/02 07:34