присоединение 2 const char*s c++
Как я могу объединить два постоянных символа в третий?
Я пытаюсь сделать это с помощью этого кода:
const char* pName = "Foo"
printf("nMy name is %s.nnn",pName);
const char* nName;
int num_chars = asprintf(&nName, "%s%s", "Somebody known as ", pName);
Но я получаю эту ошибку:
'asprintf': identifier not found
Я включаю stdio.h через этот код:
#include <stdio.h>
4 ответа:
Просто, Просто используйте 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++, смотрите ответ Лучиана.
Ошибок в коде немного - большая ошибка заключается в том, что вы не выделили память для строки, указывающей на
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);
Edit : теперь я прочитал больше о функции asprintf. Вы должны передать адрес вашего указателя в
asprintf
, но он должен быть неconst char *
, аchar*
, так как расположение памяти, на которое он указывает, изменится после выделения достаточного количества памяти вasprintf
.