我是c ++的新手,我正在寻找一种方法将三个char *字符串连接在一起?谁能给我看一些示例代码?
亲切的问候,
答案 0 :(得分:6)
在C ++中,您通常使用std::string
作为字符串。有了它,您可以与+
运算符连接。例如:
std::string s = s1 + s2 + s3;
其中s1
,s2
和s3
是您在std::string
个变量中保存的三个字符串。
如果您有s1
,s2
和s3
为char*
或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);
其中s1
,s2
和s3
是您的三个字符串char*
或const char*
。
当然,选择SOME_LARGE_ENOUGH_VALUE
是有趣的部分。如果这是一个学习练习,那么您可能想学习如何动态分配字符串。
char *str = new char[strlen(s1) + strlen(s2) + strlen(s3) + 1];
然后您可以使用上面的strcpy
,strcat
随机播放。但现在你负责销毁你分配的原始内存。所以,考虑如何以健壮的方式做到这一点,然后使用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;
}