C ++将三个char *字符串连接在一起

时间:2013-12-24 13:22:22

标签: c++

我是c ++的新手,我正在寻找一种方法将三个char *字符串连接在一起?谁能给我看一些示例代码?

亲切的问候,

4 个答案:

答案 0 :(得分:6)

在C ++中,您通常使用std::string作为字符串。有了它,您可以与+运算符连接。例如:

std::string s = s1 + s2 + s3;

其中s1s2s3是您在std::string个变量中保存的三个字符串。

如果您有s1s2s3char*const char*,那么您的写作方式会有所不同。

std::string s = s1; // calls const char* constructor
s += s2; // calls operator+=() overload that accepts const char*
s += s3; // and again

如果你真的想使用以null结尾的C字符串和C字符串函数,那么你可以使用strcpy复制并strcat进行连接。

char[SOME_LARGE_ENOUGH_VALUE] str;
strcpy(str, s1);
strcat(str, s2);
strcat(str, s3);

其中s1s2s3是您的三个字符串char*const char*

当然,选择SOME_LARGE_ENOUGH_VALUE是有趣的部分。如果这是一个学习练习,那么您可能想学习如何动态分配字符串。

char *str = new char[strlen(s1) + strlen(s2) + strlen(s3) + 1];

然后您可以使用上面的strcpystrcat随机播放。但现在你负责销毁你分配的原始内存。所以,考虑如何以健壮的方式做到这一点,然后使用std::string


从注释中,您似乎想要连接三个字符串,然后将结果字符串传递给接受C字符串的低级哈希函数。所以,我建议您使用std::string完成所有工作。仅在最后一刻,当您调用哈希函数时,使用c_str()函数获取连接字符串的const char*表示。

答案 1 :(得分:2)

const char * foo = "foo";
const char * bar = "bar";
const char * baz = "baz";

一个选项:

std::string s = foo;
s += bar;
s += baz;

另一种选择:

std::stringstream ss;
ss << foo << bar << baz;
std::string s = ss.str();

最后的另一种选择:

char* s = new char [strlen (foo) + strlen (bar) + strlen (baz) + 1];
s[0] = 0;
strcat (s, foo);
strcat (s, bar);
strcat (s, baz);
// ...
delete [] s;

答案 2 :(得分:2)

std::string s1( "Hello " );
std::string s2( "C++ " );
std::string s3( "amateur" );

s1 += s2 + s3;

std::cout << s1 << std::endl; 

或者

char s1[18] = "Hello ";
char s2[] =  "C++ ";
char s3[] = "amateur";

std::strcat( std::strcat( s1, s2 ), s3 );

std::cout << s1 << std::endl; 

答案 3 :(得分:2)

连接的简单方法:

 #include <iostream>

int main()
{
    const char* a = "welcome ";
    const char* b = "to C++ ";
    const char* c = "world";
    std::string d(a);
    std::cout<< d.append(b).append(c);

   return 0;
}