[問題] C++ string append 一直失敗?
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
→
09/25 17:27,
4年前
, 1F
09/25 17:27, 1F
→
09/25 17:30,
4年前
, 2F
09/25 17:30, 2F
→
09/25 17:30,
4年前
, 3F
09/25 17:30, 3F
len=10; p.name 內容是10個字串
TaipeiMainStation, Nangan, Taoyuan,..等10個 string
→
09/25 17:30,
4年前
, 4F
09/25 17:30, 4F
→
09/25 17:39,
4年前
, 5F
09/25 17:39, 5F
→
09/25 17:39,
4年前
, 6F
09/25 17:39, 6F
嗯嗯,我是用reference void send(struct XXX &p); 透過p.name[i]取得
※ 編輯: OfficeGL (111.71.32.115 臺灣), 09/25/2019 17:47:22
推
09/25 18:01,
4年前
, 7F
09/25 18:01, 7F
→
09/25 18:02,
4年前
, 8F
09/25 18:02, 8F
對的,所以我很無頭緒,迴圈其實有繼續跑到底
但是str不會再被更新,連第一次迴圈的最後,都沒有被加上去
※ 編輯: OfficeGL (111.71.32.115 臺灣), 09/25/2019 18:09:37
推
09/25 18:13,
4年前
, 9F
09/25 18:13, 9F
推
09/25 18:15,
4年前
, 10F
09/25 18:15, 10F
這邊應該沒問題,因為我單步驟執行,看變數內容是正確的
感覺跟c++ string有關係,我很一般的用
char buffer[] 初始化 name陣列
例如: p.name[i]=string(buffer+offset, lengthofstring)
※ 編輯: OfficeGL (111.71.32.115 臺灣), 09/25/2019 18:18:33
→
09/25 18:16,
4年前
, 11F
09/25 18:16, 11F
→
09/25 18:53,
4年前
, 12F
09/25 18:53, 12F
→
09/25 22:11,
4年前
, 13F
09/25 22:11, 13F
推
09/26 06:24,
4年前
, 14F
09/26 06:24, 14F
→
09/26 06:24,
4年前
, 15F
09/26 06:24, 15F
→
10/02 07:34,
4年前
, 16F
10/02 07:34, 16F
推
10/05 10:20,
4年前
, 17F
10/05 10:20, 17F