я знаю это x += y
эквивалентно x = x + y
, Есть ли операция, которая эквивалентна x = y + x
, Например, используя эту операцию для объединения x
а также y
, где x
а также y
являются "1"
а также "2"
, сделал бы x
равно "21"
не "12"
?
Какой самый простой способ добиться добавления строки на месте?
Очевидно, вопрос не столько в определении операторов, сколько в вставке одной строки в другую. В таком случае, std::string
имеет целую кучу insert
функции-члены для этого.
В частности, чтобы вставить строку y
в начале строки x
ты можешь использовать x.insert(0, y);
Используя вспомогательный тип, вы можете выполнить следующую работу, где x
а также y
существующий тип, как std::string
:
x +prefix= y;
Отношение к такому подходу «именованных операторов» принадлежит Якку, более полное обсуждение с примерами реализации можно найти на https://github.com/klmr/named-operator.
Конечно, создайте свой собственный тип и оператор перегрузки +=
, то есть:
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;
}