将字符串乘以C ++中的因子

时间:2013-10-19 18:37:21

标签: c++

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

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

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

1 个答案:

答案 0 :(得分: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;