Есть ли строковая операция, похожая на `+ =`, но добавленная в начало строки?

я знаю это x += y эквивалентно x = x + y, Есть ли операция, которая эквивалентна x = y + x, Например, используя эту операцию для объединения x а также y, где x а также y являются "1" а также "2", сделал бы x равно "21"не "12"?

Какой самый простой способ добиться добавления строки на месте?

0

Решение

Очевидно, вопрос не столько в определении операторов, сколько в вставке одной строки в другую. В таком случае, std::string имеет целую кучу insert функции-члены для этого.

В частности, чтобы вставить строку y в начале строки x ты можешь использовать x.insert(0, y);

2

Другие решения

Используя вспомогательный тип, вы можете выполнить следующую работу, где x а также y существующий тип, как std::string:

x +prefix= y;

Отношение к такому подходу «именованных операторов» принадлежит Якку, более полное обсуждение с примерами реализации можно найти на https://github.com/klmr/named-operator.

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;
}
1
По вопросам рекламы [email protected]