[英]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.