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