Почему std :: string не определяет умножение или литералы? [закрыто]

На языке, с которым я впервые познакомился, была функцияrepeat(), который взял строку, и повторил ееn раз. Например,repeat ("hi", 3) дает результат"hihihi".

У меня было довольно много раз, когда я использовал эту функцию, но, к моему ужасу, я никогда не находил ничего подобного в C ++. Да, я могу легко сделать свой собственный или сделать его проще в использовании, но я несколько удивлен, что он уже не включен.

Одно место, в которое это действительно хорошо вписалось бы, - этоstd::string:

std::string operator* (const std::string &text, int repeatCount);
std::string operator* (int repeatCount, const std::string &text);

Это позволило бы использовать такой синтаксис:

cout << "Repeating \"Hi\" three times gives us \"" << std::string("Hi") * 3 << "\"."

Теперь это само по себе еще не слишком здорово, но могло бы быть и лучше, что подводит меня к другой моей части: литералам.

Каждый раз, когда мы используем строковые операторы, такие какoperator+, мы должны убедиться, что один аргумент на самом деле является строкой. Почему они просто не определили литерал для него, как""s? Буквальные суффиксы, не начинающиеся с подчеркивания, зарезервированы для реализации, так что это не должно противоречить тому, как это можно было бы добавить до того, как кто-то действительно начнет создавать свои собственные.

Возвращаясь к повторному примеру, синтаксис будет просто:

cout << "123"s * 3 + "456"s;

Это даст:

123123123456

В то же время, один для персонажей может быть включен, чтобы удовлетворитьcout << '1's + '2's;

Почему эти две функции не были включены? Они определенно имеют четкое значение и облегчают кодирование, но при этом используют стандартные библиотеки.

Ответы на вопрос(2)

Ваш ответ на вопрос