简单的字符串连接

时间:2012-10-22 14:22:38

标签: c++

如果我在Python中有一个字符串x='wow',我可以使用__add__函数将此字符串与自身连接起来,如下所示:

x='wow'  
x.__add__(x)  
'wowwow'

如何在C ++中执行此操作?

5 个答案:

答案 0 :(得分:7)

从语义上讲,你的python代码的等价物就像是

std::string x = "wow";
x + x;

即。创建一个临时字符串,它是xx的串联,并丢弃结果。要附加到x,您可以执行以下操作:

std::string x = "wow";
x += x;

请注意双引号"。与python不同,在C ++中,单引号用于单个字符,双引号用于空终止字符串文字。

请参阅此std::string参考。

顺便说一下,在Python中你通常不会调用__add__()方法。您将使用与第一个C ++示例等效的语法:

x = 'wow'
x + x

__add__()方法只是为类提供“加”运算符的python方法。

答案 1 :(得分:3)

您可以使用std::stringoperator+operator+=std::stringstream operator <<

std::string x("wow");
x = x + x;
//or
x += x;

还有std::string::append

答案 2 :(得分:3)

您可以使用+运算符在C ++中连接字符串:

std::string x = "wow";
x + x; // == "wowwow"

在Python中,您也可以使用+代替__add__(而+被认为比.__add__更像Pythonic:

x = 'wow'  
x + x # == 'wowwow'

答案 3 :(得分:1)

std::string x = "wow"
x = x + x;

答案 4 :(得分:-2)

通常,在连接两个不同的字符串时,您只需对要附加的字符串使用operator+=

string a = "test1";
string b = "test2";

a += b;

将正确地产生a=="test1test2"

但是在这种情况下,您不能简单地将字符串附加到自身,因为附加操作会更改源和目​​标。换句话说,这是不正确的:

string x="wow";
x += x;

相反,一个简单的解决方案是创建一个临时的(为了清晰起见):

string x = "wow";
string y = x;
y += x;

...然后交换回来:

x = y;