-4

Python に文字列がある場合、次のようにx='wow'、関数を使用してこの文字列をそれ自体と連結できます。__add__

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

C++でこれを行うにはどうすればよいですか?

4

5 に答える 5

7

Semantically, the equivalent of your python code would be something like

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

i.e. create a temporary string which is the concatenation of x with x and throw away the result. To append to x you would do the following:

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

Note the double quotes ". Unlike python, in C++, single quotes are for single characters, and double-quotes for null terminated string literals.

See this std::string reference.

By the way, in Python you wouldn't usually call the __add__() method. You would use the equivalent syntax to the first C++ example:

x = 'wow'
x + x

The __add__() method is just the python way of providing a "plus" operator for a class.

于 2012-10-22T14:23:55.160 に答える
3

演算子を使用して+、C++で文字列を連結できます。

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

+Pythonでは、代わりに使用することもできます__add__(そして、+よりPythonicと見なされます.__add__):

x = 'wow'  
x + x # == 'wowwow'
于 2012-10-22T15:27:28.663 に答える
3

std::stringおよびoperator+またはoperator+=または をstd::stringstreamとともに使用できますoperator <<

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

もありstd::string::appendます。

于 2012-10-22T14:23:26.987 に答える
1
std::string x = "wow"
x = x + x;
于 2012-10-22T14:23:42.457 に答える
-2

通常、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 に答える