如果我在 Python 中有一个字符串,我可以使用该函数x='wow'
将这个字符串与其自身连接起来,如下所示:__add__
x='wow'
x.__add__(x)
'wowwow'
我怎样才能在 C++ 中做到这一点?
如果我在 Python 中有一个字符串,我可以使用该函数x='wow'
将这个字符串与其自身连接起来,如下所示:__add__
x='wow'
x.__add__(x)
'wowwow'
我怎样才能在 C++ 中做到这一点?
从语义上讲,您的 python 代码的等价物类似于
std::string x = "wow";
x + x;
即创建一个临时字符串,它是x
with的连接x
并丢弃结果。要附加到x
您身上,请执行以下操作:
std::string x = "wow";
x += x;
注意双引号"
。与 python 不同,在 C++ 中,单引号用于单个字符,双引号用于以空字符结尾的字符串文字。
请参阅此std::string
参考。
顺便说一句,在 Python 中,您通常不会调用该__add__()
方法。您将使用与第一个 C++ 示例等效的语法:
x = 'wow'
x + x
该__add__()
方法只是为类提供“加号”运算符的python方式。
您可以使用std::string
andoperator+
或operator+=
or or a std::stringstream
with operator <<
。
std::string x("wow");
x = x + x;
//or
x += x;
还有std::string::append
。
您可以使用+
运算符在 C++ 中连接字符串:
std::string x = "wow";
x + x; // == "wowwow"
在 Python 中,您也可以使用+
代替__add__
(并且+
被认为比 更 Pythonic .__add__
):
x = 'wow'
x + x # == 'wowwow'
std::string x = "wow"
x = x + x;
通常,当连接两个不同的字符串时,您可以简单地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;