C++ 有没有直接连接两个字符数组(char*)的方法?

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

我知道我可以用它们构造字符串,只需使用运算符+。 但是我需要将连接的字符数组传递给和旧的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*
    作为字符串中第一个字符的指针吗?不,我没有。。。这解决了一切!