2013-10-19 24 views
2

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

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

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

回答

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; 
+0

我希望我不需要进入另一个'for'循环。 – Ares

+0

@Dochevsky更新:D – P0W

相关问题