2

有没有一种简单的方法可以通过将字符串乘以一个因子来创建具有重复序列的字符串。例如在 python 中我可以3*'ab'做得到ababab.

我可以在 C++ 中做这样的事情吗?字符串构造函数只需要一个字符。

我正在寻找一种根据循环计数器将一系列字符串串在一起的方法。

4

1 回答 1

5

你总是可以超载*

像这样的东西:

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

std::string s="ab";
std::cout<<s*3<<std::endl;

编辑我希望我不需要进入另一个 for 循环。- Dochevsky”

您可以使用std::fill_nstd::stringstream

#include<algorithm>
#include<sstream>
//...
std::stringstream ss;
std::fill_n( std::ostream_iterator< const char* >( ss ),
           3, "ab" ); //Replace ss with std::cout, to output on standard output
std::string str =ss.str();
std::cout<<str;
于 2013-10-19T18:42:26.057 回答