如何连接字符串和const char?

时间:2012-04-20 13:28:38

标签: c++ string

我需要在c中加入“hello world”。 我怎么能这样做?

string a = "hello ";
const char *b = "world";

const char *C;

2 个答案:

答案 0 :(得分:29)

string a = "hello ";
const char *b = "world";
a += b;
const char *C = a.c_str();

或不修改a

string a = "hello ";
const char *b = "world";
string c = a + b;
const char *C = c.c_str();

少量编辑,以匹配 111111 给出的信息量。

如果您已经拥有string s(或const char * s,但我建议将后者投射到前者),您可以将它们“加”起来以形成更长的字符串。但是,如果你想要附加的东西不仅仅是你已经拥有的字符串,你可以使用stringstreamoperator<<,它与cout完全相同,但不会打印文本到标准输出(即控制台),但是它的内部缓冲区,您可以使用它的.str()方法从中获取std::string

std::string::c_str()函数返回指向其中包含的字符串const char缓冲区(即const char *)的指针,该字符串以空值终止。然后,您可以将其用作任何其他const char *变量。

答案 1 :(得分:9)

如果您只需要连接,请使用operator +operator +=函数

 #include <string>
 ///...
 std::string str="foo";
 std::string str2=str+" bar";
 str+="bar";

但是,如果您有很多连词,那么您可以使用字符串流

#include <sstream>
//...
std::string str1="hello";
std::stringstream ss;
ss << str1 << "foo" << ' ' << "bar" << 1234;
std::string str=ss.str();

编辑:然后您可以将字符串传递给带有const char *的{​​{1}}的C函数。

c_str()

并且如果C func采用非const char *或需要所有权,则可以执行以下操作

my_c_func(str1.c_str());