C ++使用std :: string-为什么?

时间:2019-02-04 16:36:30

标签: c++ string function stdstring

我想问,

string :: string运算符的功能如何,我知道它是使用字符串的标准构造函数,但是 operator 的作用是什么?到底允许我使用乘法运算符吗? Size_t代表对象的大小,string&是引用传递。这些概念如何理解?

#include <iostream>
#include <string>
using namespace std::literals::string_literals;

std::string operator*(std::size_t n, const std::string& s)
{
   std::string ret;
   while (n--)
       ret += s;
   return ret;
}

int main()
{
std::cout << 5 * std::string("Hallo") << std::endl;
std::cout << 5 * "Test"s << std::endl;
}

std :: string ret是什么意思,由于std :: string我可以使用它吗?因为std :: string是在开头定义的?

1 个答案:

答案 0 :(得分:1)

通过实现operator*,您可以将类型size_t与类型string“相乘”。之所以用引号引起来,是因为您自己实现了“乘”的含义。在此特定的实现中,string仅附加了其自身n次。

所以5 * std::string("Hallo")将导致HalloHalloHalloHalloHallo