Por que o std :: string não define multiplicação ou literais? [fechadas]

Na língua em que fui apresentado pela primeira vez, havia uma funçãorepeat(), que levou uma corda e repetiun vezes. Por exemplo,repeat ("hi", 3) dá um resultado de"hihihi".

Eu tive algumas vezes que eu usei essa função, mas para meu espanto, eu nunca encontrei algo semelhante em C ++. Sim, eu posso facilmente fazer o meu próprio, ou torná-lo mais fácil de usar, mas estou surpreso que ele não esteja incluído.

Um lugar que se encaixaria muito bem é emstd::string:

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

Isso permitiria uma sintaxe como:

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

Agora, isso em si não é muito bom ainda, mas poderia ser melhor, o que me leva à minha outra parte: literais.

Sempre que usamos os operadores de string, comooperator+, temos que ter certeza que um argumento é na verdade uma string. Por que eles simplesmente não definiram um literal para isso, como""s? Sufixos literais que não começam com um sublinhado são reservados para a implementação, portanto, isso não deve conflitar, já que isso poderia ter sido adicionado antes que alguém realmente começasse a fazer o próprio.

Voltando ao exemplo da repetição, a sintaxe seria simplesmente:

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

Isso produziria:

123123123456

Enquanto isso, um para personagens pode ser incluído também, para satisfazercout << '1's + '2's;

Por que esses dois recursos não foram incluídos? Eles definitivamente têm um significado claro e facilitam a codificação, enquanto ainda usam as bibliotecas padrão.

questionAnswers(2)

yourAnswerToTheQuestion