我知道我可以用它们构造字符串,只需使用operator +。 但是我需要将连接的char数组传递给旧的C函数,所以我不能这样做。
答案 0 :(得分:3)
您可以使用std::string
std::string s1 = "Hello", s2 = "World";
std::string s3 = s1 + s2;
const char* c_data = s3.c_str( ); // pointer to char array
您可以使用strcat功能
答案 1 :(得分:0)
如果您正在与C代码交互,您可能希望您的字符串分配malloc()
而不是new
:C中有许多可用的函数可以生成malloc' ed字符串。其中一个是asprintf()
,您可以轻松地使用它来连接您的字符串:
char* foo = ..., *bar = ..., *result;
asprintf(&result, "%s%s", foo, bar);
baz(result); //Use the concatenated string.
free(result); //cleanup
这种方法的好处是,它非常安全:由于asprintf()
分配缓冲区以适合您的字符串,因此不存在像strcat()
那样超越缓冲区的危险,{{1}和朋友们。
但请注意,即使strcpy()
符合POSIX-2008标准,它也不是C标准的一部分,因此无处可用。但是,所有Linux系统都有它。