2017-01-13 18 views
0

私はx += yx = x + yに相当することを知っています。 x = y + xに相当する操作がありますか?例えば、xy"1""2"ありxyを組み合わせるために、この操作を使用して、"21"、ない"12"からxが同じになるだろうか?`+ =`に似た文字列操作がありますが、文字列の先頭に追加されますか?

文字列をインプレースに先行させる最も簡単な方法は何ですか? Yakkに行く、あなたは見つけることができます。この「という名前の演算子」アプローチのための

x +prefix= y; 

クレジット:

+0

を使用することができますx

具体的には、文字列の先頭に文字列yを挿入します。しかし、整数をシミュレートするクラスを宣言することができます。また、このクラスのオブジェクトに対しては、好きなように操作をオーバーロードすることができます。しかし、新しい演算子を導入することはできません。既に言語に存在する演算子をオーバーロードすることがあります。 –

+0

@NathanOliver私は文字列として意味!私は今編集する。 – theo2003

+1

@ theo2003:C++の中には、オーバーロードされた 'x + = y'を' x = y + x'として実装できないものはありません。それは良い習慣ではありませんが、あなたはそれを行うことができます。これはあなたの質問に答えますか? – AnT

答えて

2

明らかに、ある文字列を別の文字列に挿入することについての質問は、演算子の定義についてあまりありません。その場合、std::stringには、これを行うための一束がinsert member functionsあります。あなたはあなたが基本的なタイプのための操作をオーバーロードしないことがありx.insert(0, y);

1

は、ヘルパータイプを使用することで、xystd::stringのような既存の型があり、次の作業を行うことができます具体的な実装例はhttps://github.com/klmr/named-operatorです。

+0

ありがとう、私は、単純な解決策で可能かどうか疑問に思っていました。とにかく、ありがとう。 – theo2003

1

確かに、独自のタイプとオーバーロード演算子+=を作成してください。すなわち:

struct MyString 
{ 
    std::string _string; 

    MyString(const std::string & str) : _string(str) {} 
    MyString(std::string && str) : _string(std::move(str)) { } 

    void operator+=(const MyString & rhs) 
    { 
     _string = rhs._string + _string; 
    } 
}; 

int main() 
{ 
    MyString abc("abc"); 
    MyString xyz("xyz"); 

    abc += xyz; 

    std::cout << abc._string; 
} 
+0

私はそれが簡単な方法で可能かどうか尋ねていましたが、とにかく感謝します! – theo2003

関連する問題