在我第一次接触的语言中,有一个函数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;
为什么不包括这两个功能?它们肯定有明确的含义,并且使编码更容易,同时仍然使用标准库。