C++ 有没有直接连接两个字符数组(char*)的方法?
我知道我可以用它们构造字符串,只需使用运算符+。 但是我需要将连接的字符数组传递给和旧的C函数,所以我不能这样做C++ 有没有直接连接两个字符数组(char*)的方法?,c++,C++,我知道我可以用它们构造字符串,只需使用运算符+。 但是我需要将连接的字符数组传递给和旧的C函数,所以我不能这样做 您可以使用std::string std::string s1 = "Hello", s2 = "World"; std::string s3 = s1 + s2; const char* c_data = s3.c_str( ); // pointer to char array 你可以用函数来做 如果您正在与C代码交互,您可能希望字符串分配给malloc(),而不是new:C
std::string
std::string s1 = "Hello", s2 = "World";
std::string s3 = s1 + s2;
const char* c_data = s3.c_str( ); // pointer to char array
如果您正在与C代码交互,您可能希望字符串分配给
malloc()
,而不是new
:C中有许多漂亮的函数可以生成malloc字符串。其中之一是asprintf()
,您可以轻松使用它连接字符串:
char* foo = ..., *bar = ..., *result;
asprintf(&result, "%s%s", foo, bar);
baz(result); //Use the concatenated string.
free(result); //cleanup
这种方法的优点是非常安全:因为asprintf()
分配了一个缓冲区来适应您的字符串,所以不会像strcat()
、strcpy()
和friends那样出现缓冲区溢出的危险
但是,请注意,尽管
asprintf()
符合POSIX-2008标准,但它不是C标准的一部分,因此它不适用于任何地方。但是,所有Linux系统都有它。您知道std::string有一个名为c_str()
的成员函数,它生成一个const char*
作为字符串中第一个字符的指针吗?不,我没有。。。这解决了一切!