cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Добавить оператор сложения последовательности символов и std::string #324

Closed apolukhin closed 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +1, -0 Автор идеи: Evgeny Basargin

Зачастую хочется осуществить конкатенацию строковой константы и строки. В данный момент это делать не очень неудобно. Нужно использовать либо std::stringstream:

std::string world(" world");

std::stringstream ss;

ss << "hello" << world;

либо конструировать строку от строковой константы:

std::string world(" world");

std::string("hello") + world;

Хочу предложить добавить в стандарт следующий оператор сложения, который может упростить жизнь:

template<typename Char_T>
std::basic_string<Char_T> operator+(const Char_T* c_str, const std::basic_string<Char_T>& str) {
    return std::basic_string<Char_T>(c_str) + str;
}

при введении данного оператора следующая операция станет совершенно легальной:

std::string world(" world");

"hello" + world;
apolukhin commented 3 years ago

yndx-antoshkka, 16 июля 2018, 11:16 Такие операторы уже сть в стандарте: http://eel.is/c++draft/string.op+#5

Кажется, что недочёт в вашей стандартной библиотеке. Каким компилятором и стандартной библиотекой вы пользуетесь?

Evgeny Basargin, 16 июля 2018, 11:22 yndx-antoshkka, скорее мой пробел в познаниях стандартной библиотеки. Действительно так, можно снять с голосования.