[問題] Call function return padding string

看板C_and_CPP (C/C++)作者 (超黑城市)時間7年前 (2019/03/28 10:21), 編輯推噓0(004)
留言4則, 3人參與, 7年前最新討論串1/2 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC Eclipse 問題(Question): 1. string AddPadding(int PadLen, string Str) { char buff[100]; snprintf(buff, 100, " %*s", PadLen, Str.c_str()); return buff; } 2. string AddPadding(int PadLen, string Str, char* buff) { snprintf(buff, 100, " %*s", PadLen, Str.c_str()); return buff; } 3. string AddPadding(int PadLen, string Str, char* buff) { int PadCount = PadLen - Str.length() + 1; for (int Index = 0; Index < PadCount; Index++) { buff[Index] = ' '; } strcpy(buff + PadCount, Str.c_str()); return buff; } Note: (2)(3)外部宣告char buff[100]; 想請問一下,第一種寫法是可行的嗎? 還是會有機會造成buff的空間釋放後資料錯誤? 第二種和第三種寫法應該是結果相同且能保證回傳的資料沒問題吧... 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.229.118 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1553739666.A.F46.html

03/28 10:24, 7年前 , 1F
回傳時已經變成string object了
03/28 10:24, 1F

03/28 10:26, 7年前 , 2F
所以三種寫法都是可行的,感謝^^
03/28 10:26, 2F

03/30 11:15, 7年前 , 3F
已經是string轉成c_str來pad再轉string
03/30 11:15, 3F

03/30 11:15, 7年前 , 4F
繞一大圈 畫蛇添足
03/30 11:15, 4F
文章代碼(AID): #1Sd2-Iz6 (C_and_CPP)
文章代碼(AID): #1Sd2-Iz6 (C_and_CPP)