如果我有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
与x
串联和扔掉的结果。要追加到x
你会做到以下几点:
std::string x = "wow";
x += x;
注意双引号"
。与python不同,在C++中,单引号用于单个字符,用空字符串结尾的双引号。
看到这个std::string
参考。
顺便说一下,在Python中,您通常不会调用__add__()
方法。你会使用等效语法第一C++例如:
x = 'wow'
x + x
的__add__()
方法仅仅是一个类,它提供一个“加”运算符的蟒蛇方式。
谢谢,这很有用 –
问题是'__add__',它是C++中的'+',而不是'+ ='。 –
@daknøk我明白你的观点。标题说“附加到字符串”,但代码连接两个字符串并返回结果。我会解决我的例子。 – juanchopanza
您可以使用std::string
和operator+
或operator+=
或std::stringstream
与operator <<
。
std::string x("wow");
x = x + x;
//or
x += x;
还有std::string::append
。
谢谢,这很有用 –
std::string x = "wow"
x = x + x;
可以使用+
运算符连接字符串在C++:
std::string x = "wow";
x + x; // == "wowwow"
在Python中,你也可以使用+
代替__add__
(和+
被认为比.__add__
更Python):
x = 'wow'
x + x # == 'wowwow'
因此,在C++中,Python的'x .__ add __(x)'相当于'operator +(x,x)',对吧?只是我不确定''''''''字符串是不是一个成员。 _Sigh._) – sbi
@sbi yes,Python的'__add__'等同于C++的'operator +'。 –
通常,在连接两个不同的字符串时,可以简单地使用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;
为什么'x + = x'不正确?标准*要求*它的工作。 –
@ R.MartinhoFernandes:哪里? –
运算符+ =的作用与第21.4.6.2/9节中描述的带有char const *和大小的append函数相同。这是以任何有效的方式措辞。 –
'x + = x;'?这实际上非常直观。 – chris
这是一个微不足道的问题。 – jogojapan
(1)所有四个答案都是错误的,(2)问题的结束是错误的。天啊。 –