Python に文字列がある場合、次のようにx='wow'
、関数を使用してこの文字列をそれ自体と連結できます。__add__
x='wow'
x.__add__(x)
'wowwow'
C++でこれを行うにはどうすればよいですか?
Python に文字列がある場合、次のようにx='wow'
、関数を使用してこの文字列をそれ自体と連結できます。__add__
x='wow'
x.__add__(x)
'wowwow'
C++でこれを行うにはどうすればよいですか?
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.
演算子を使用して+
、C++で文字列を連結できます。
std::string x = "wow";
x + x; // == "wowwow"
+
Pythonでは、代わりに使用することもできます__add__
(そして、+
よりPythonicと見なされます.__add__
):
x = 'wow'
x + x # == 'wowwow'
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;
通常、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;