-4

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

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

我怎样才能在 C++ 中做到这一点?

4

5 回答 5

7

从语义上讲,您的 python 代码的等价物类似于

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

即创建一个临时字符串,它是xwith的连接x并丢弃结果。要附加到x您身上,请执行以下操作:

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

注意双引号"。与 python 不同,在 C++ 中,单引号用于单个字符,双引号用于以空字符结尾的字符串文字。

请参阅此std::string参考。

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

x = 'wow'
x + x

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

于 2012-10-22T14:23:55.160 回答
3

您可以使用std::stringandoperator+operator+=or or a std::stringstreamwith operator <<

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

还有std::string::append

于 2012-10-22T14:23:26.987 回答
3

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

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

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

x = 'wow'  
x + x # == 'wowwow'
于 2012-10-22T15:27:28.663 回答
1
std::string x = "wow"
x = x + x;
于 2012-10-22T14:23:42.457 回答
-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;
于 2012-10-22T15:38:23.797 回答