Python-类似于 C++ 中的字符串乘法

Python-like string multiplication in C++

作为一名长期的 Python 程序员,我非常欣赏 Python 的字符串乘法功能,如下所示:

> print("=" * 5)  # =====

因为 C++ std::string 没有 * 重载,所以我设计了以下代码:

#include <iostream>
#include <string>


std::string operator*(std::string& s, std::string::size_type n)
{
  std::string result;

  result.resize(s.size() * n);

  for (std::string::size_type idx = 0; idx != n; ++idx) {
    result += s;
  }
  return result;
}


int main()
{
  std::string x {"X"};

  std::cout << x * 5; // XXXXX
}

我的问题:是否可以做得更多idiomatic/effective(或者我的代码有缺陷)?

简单地使用 right constructor 作为您的简单示例怎么样:

std::cout << std::string(5, '=') << std::endl; // Edit!

对于真正的乘法 字符串你应该使用一个简单的内联函数(和reserve() 以避免多次重新分配)

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

并使用它

std::cout << (std::string("=+") * 5) << std::endl;

看到一个Live Demo