C++ 简单字符串串联

C++ 简单字符串串联,c++,C++,如果我在Python中有一个字符串x='wow',我可以使用\uuuuu add\uuuuu函数将该字符串与其自身连接起来,如下所示: x='wow' x.__add__(x) 'wowwow' < C++ > < p>如何使用“ STD::String < /Cuff>和运算符+或运算符+= 或 STD::String Strue >语义>代码>运算符> p>语义,相当于您的Python代码将类似于 std::string x = "wow"; x + x; i、 e.创建一个临

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

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

< C++ >

< p>如何使用“<代码> STD::String < /Cuff>和<代码>运算符+<代码>或<代码>运算符+= 或<代码> STD::String Strue >语义>代码>运算符> p>语义,相当于您的Python代码将类似于

std::string x = "wow";
x + x;
i、 e.创建一个临时字符串,它是
x
x
的串联,并丢弃结果。要附加到
x
,请执行以下操作:

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

注意双引号<代码> 。与Python不同,C++中,单引号是单字符的,双引号用于null结尾的字符串文字。

请参阅此参考资料

顺便说一下,在Python中,通常不调用< C++ >代码> >代码>方法。

x = 'wow'
x + x

\uuuu add\uuuu()
方法只是python为类提供“plus”运算符的一种方式。

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

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

在Python中,您也可以使用
+
而不是
\uuuuuuuuuuuuuuuuuuuuuuuu
(并且
+
被认为比
\uuuuuuuuuuuuuuuuuu
更像Pythonic):


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

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

a += b;
将正确地产生
a==“test1test2”

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

string x="wow";
x += x;
相反,一个简单的解决方案是只创建一个临时文件(为清晰起见,请详细说明):

…然后将其交换回:

x = y;

那么
x+=x;
?这其实很直观。(1)所有四个答案都是错误的,(2)问题的结尾是错误的。天啊。虽然这个问题很琐碎,但它显然是一个真正的问题question@Abyx:出于同样的原因,请不要仅仅为了对抗现有的否决票而将此问题向上投票。这与连接或追加无关。这两个问题都是琐碎的,而且记录非常充分。问题是关于
_在代码中,< AddixAd> ,这是<代码> > +代码>,而不是<代码> += 。,但该代码连接两个字符串并返回结果。我将修正我的示例。为什么
x+=x
不正确?该标准要求它工作。@R.MartinhoFernandes:Where?操作符+=
的效果定义为与附加函数相同,附加函数采用
字符常量*
和大小,如§21.4.6.2/9所述。你提到的这段话描述的是
append
的效果,而不是它的工作机制。标准中没有明确规定允许
将字符串附加到自身。在MSVC10下逐步浏览
insert
的代码,我发现它确实有效,在大多数合理的编译器中可能都是这样——但我仍然看不到标准中保证正确的任何地方;没有任何异常被列出。因此,在C++中,与python的<代码> x.yas-Addithyx(x)<代码>相当的是<代码>运算符+(x,x)< /> >,对吗?只是我不确定字符串的
+
是否不是成员。叹息)@ SBI是的,Python的< C++ > AdxAdg> <代码>相当于C++的代码>运算符+<代码>。
string a = "test1";
string b = "test2";

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