c++ - 在 C++ 中,我认为你可以做 "string times 2"= string string?

标签 c++

我正在尝试弄清楚如何多次打印一个字符串。我收到错误。我刚刚尝试了这条线:

cout<<"This is a string.  "*2;

我期望输出:“这是一个字符串。这是一个字符串。”,但我没有得到。这条线有什么问题吗?如果没有,这是整个程序:

#include <iostream>
using namespace std;


int main()
{
  cout<<"This is a string.  "*2;

  cin.get();
  return 0;
}

我的编译器没有打开,因为我正在进行病毒扫描,所以我无法给出错误信息。但考虑到此网站的这段代码相对简单,我希望有人只要看一眼就能知道我是否做错了什么。

感谢您的反馈。

最佳答案

如果你切换到std::string,你可以自己定义这个操作:

std::string operator*(std::string const &s, size_t n)
{
    std::string r;  // empty string
    r.reserve(n * s.size());
    for (size_t i=0; i<n; i++)
        r += s;
    return r;
}

如果你尝试

std::cout << (std::string("foo") * 3) << std::endl

你会发现它打印出 foofoofoo。 (但是 "foo"* 3 仍然是不允许的。)

关于c++ - 在 C++ 中,我认为你可以做 "string times 2"= string string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145792/

相关文章:

c++ - 如何使用最小包含创建一个用模板函数包装对象的库?

c++ - 将 std::map 数据复制到另一个 map

c++ - 尽管使用浮点运算,仍从 fmod 或类似的方法获得预期结果

c++ - VS 代码 "command": "make" differs from command line `make` in terminal window

c++ - 编译器优化使程序崩溃

c++ - 获取类型为 'Node' 的临时对象的地址

c++ - 如何在构造函数调用中使用初始化列表来配置 `std::vector<std::vector<MyClass>>`?

c++ - 如何将 vector 的后半部分移动到另一个 vector 中?

c++ - 我如何知道哪个QTcpSocket发出了readyRead()信号?

c++ - 为什么虚假陈述仍然执行?