有没有直接的方法可以连接两个字符数组 (char*)

Is there a direct way to concatenate two char arrays (char*)?

本文关键字:两个 字符 数组 char 方法 有没有 连接      更新时间:2023-10-16

我知道我可以用它们构造字符串,只需使用运算符+。但是我需要将串联的字符数组传递给旧的 C 函数,所以我不能这样做。

  1. 你可以用std::string做到这一点

    std::string s1 = "Hello", s2 = "World";
    std::string s3 = s1 + s2;
    const char* c_data = s3.c_str( ); // pointer to char array
    
  2. 你可以用strcat函数来做

如果你正在与 C 代码交互,你可能希望你的字符串被分配malloc()而不是new:C 中有许多不错的函数可以产生错误字符串。其中之一是 asprintf() ,您可以轻松地使用它来连接字符串:

char* foo = ..., *bar = ..., *result;
asprintf(&result, "%s%s", foo, bar);
baz(result);    //Use the concatenated string.
free(result);    //cleanup

这种方法的好处是,它非常安全:由于asprintf()分配了一个缓冲区来适应你的字符串,所以没有像strcat()strcpy()和朋友那样溢出缓冲区的危险。

但是请注意,即使asprintf()符合 POSIX-2008 标准,它也不是 C 标准的一部分,因此并非在所有地方都可用。不过,所有Linux系统都有它。