[語法] C++ 有合併字串的功能嗎?

看板C_and_CPP (C/C++)作者 (龍騎士2)時間14年前 (2010/04/16 12:08), 編輯推噓3(3017)
留言20則, 6人參與, 最新討論串1/1
我以前用過 VB 他可以用類似這種方式, 合併字串傳給 Function 例如: Function printStr(str as String) Debug.Pring(str) End Function Sub test() Dim str="String" printStr("This is a str" & str & ".") End Sub 我知道 C 可以這樣用 void printStr(char *str) { printf("%s\n",str); } void test(void){ char str[]="String"; char str2[80]; strcpy(str2,"This is a "); strcat(str2,str); strcat(str2,"."); printStr(str2); } C 或 C++ 有更直接的作法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.34.17

04/16 12:09, , 1F
你可以用C++ string class :)
04/16 12:09, 1F

04/16 12:10, , 2F
C: 若只是要印出 -> printf() 若是複雜字串 -> sprintf()
04/16 12:10, 2F

04/16 12:14, , 3F
strcat() ??
04/16 12:14, 3F

04/16 12:15, , 4F
啊, 原來原po寫了, 基本上就C++ string最方便吧@_@"
04/16 12:15, 4F

04/16 12:19, , 5F
C++ string 就 str = str1 + str2;
04/16 12:19, 5F

04/16 13:12, , 6F
你確定你問的是 C++ 不是 C ?
04/16 13:12, 6F

04/16 13:12, , 7F
C++ 就 string 和 ostringstream 吧。
04/16 13:12, 7F

04/16 13:13, , 8F
想串數字什麼的先 ostringstream 串起來再丟給 string。
04/16 13:13, 8F

04/16 16:53, , 9F
我是問 C++
04/16 16:53, 9F

04/16 16:53, , 10F
不過我的環境還是有一些Function要傳入 char *
04/16 16:53, 10F

04/16 16:54, , 11F
如果我用 string str; 的話, 標準作法是:
04/16 16:54, 11F

04/16 16:54, , 12F
char 要轉 string 或 stringstream 都很容易
04/16 16:54, 12F

04/16 16:55, , 13F
假設要傳入 fn(char *), 我應該先宣告一個 char *tmps;
04/16 16:55, 13F

04/16 16:56, , 14F
然後 strcpy(tmps, str.c_str);fc(tmps); 還是
04/16 16:56, 14F

04/16 16:56, , 15F
fn((char *)str.c_str()); 就好了
04/16 16:56, 15F

04/16 16:57, , 16F
更正上上行, fn(tmps);
04/16 16:57, 16F

04/16 16:58, , 17F
該看你的 fc 會不會修改字串吧 c_str 回傳的不能改(?)
04/16 16:58, 17F

04/19 04:04, , 18F
你不應該把c_str()回傳的東西轉成char* 常數性不要亂變...
04/19 04:04, 18F

04/19 04:04, , 19F
如果你要傳入的東西不會被改 那就讓他傳入const char*
04/19 04:04, 19F

04/19 04:05, , 20F
如果會被改 那就像你說的要做一個新的 不過你可以用strdup()
04/19 04:05, 20F
文章代碼(AID): #1Bn-A_uc (C_and_CPP)
文章代碼(AID): #1Bn-A_uc (C_and_CPP)