如果我有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)問題的結束是錯誤的。天啊。 –