有没有直接的方法来连接两个char数组(char *)?

时间:2015-01-24 09:24:32

标签: c++

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

2 个答案:

答案 0 :(得分:3)

  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功能

  3. 执行此操作

答案 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系统都有它。