2013-10-19 25 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

相關問題