[英]joining 2 const char*s c++
如何將兩個const char * s組合成第三個?
我正在嘗試使用此代碼執行此操作:
const char* pName = "Foo"
printf("\nMy name is %s.\n\n\n",pName);
const char* nName;
int num_chars = asprintf(&nName, "%s%s", "Somebody known as ", pName);
但我得到這個錯誤:
'asprintf': identifier not found
我通過以下代碼包含stdio.h:
#include <stdio.h>
簡單,只需使用C ++:
const char* pName = "Foo"
std::string name("Somebody known as ");
name += pName;
const char* nName = name.c_str();
sprintf(snprintf)或strcat(strncat)。 sprintf的。
sprintf(nName, "%s%s", "Somebody known as ", pName);
strcat的。
strcpy(nName, "Somebody known as ");
strcat(nName, pName);
我將假設你使用C,除此之外你已經將這個問題標記為C ++。 如果你想要C ++,請參閱Luchian的回答。
代碼中的錯誤很少 - 更大的錯誤是您沒有為pName
指定字符串指定內存。 第二個錯誤是您正在獲取nName
變量的地址,而不是asprintf
函數中的保留內存位置的地址。 第三個錯誤是asprintf
函數不是標准的C函數,但GNU擴展可能在你的編譯器上沒有(你沒說的是): http : //linux.die.net/man/3/asprintf
你應該使用這樣的東西:
#include <stdio.h>
const char* pName = "Foo"
printf("\nMy name is %s.\n\n\n",pName);
char nName[30];
int num_chars = sprintf(nName, "%s%s", "Somebody known as ", pName);
編輯 :我現在已經閱讀了更多關於asprintf函數的內容。 你應該在asprintf
傳遞指針的asprintf
,但它不應該是const char *
而是char*
,因為它指向的內存位置會在asprintf
分配足夠的內存后發生變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.