如果我在Python中有一个字符串x='wow'
,我可以使用__add__
函数将此字符串与自身连接起来,如下所示:
x='wow'
x.__add__(x)
'wowwow'
如何在C ++中执行此操作?
答案 0 :(得分:7)
从语义上讲,你的python代码的等价物就像是
std::string x = "wow";
x + x;
即。创建一个临时字符串,它是x
与x
的串联,并丢弃结果。要附加到x
,您可以执行以下操作:
std::string x = "wow";
x += x;
请注意双引号"
。与python不同,在C ++中,单引号用于单个字符,双引号用于空终止字符串文字。
请参阅此std::string
参考。
顺便说一下,在Python中你通常不会调用__add__()
方法。您将使用与第一个C ++示例等效的语法:
x = 'wow'
x + x
__add__()
方法只是为类提供“加”运算符的python方法。
答案 1 :(得分:3)
您可以使用std::string
和operator+
或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;