C++ で文字列の繰り返し
某所で少し話題になったのだけれど、例えば Ruby だと
puts "homu" * 10 # => homuhomuhomuhomuhomuhomuhomuhomuhomuhomu
みたいな感じで文字列の繰り返しを書けるのですが、C++ だとどうするのが楽か、という問。
とりあえず、* 演算子でできるように書いてみた。
[ソース]
#include <string> #include <iostream> std::string operator ""_s(char const* str, std::size_t){ return str; } std::string operator *(std::string const& str, int n){ if( n < 1 ) return ""; std::string result; result.reserve(str.length() * n); for(int i = 0 ; i < n ; ++i){ result += str; } return result; } int main(){ auto result = "homu"_s * 10; std::cout << result << std::endl; return 0; }
[出力]
homuhomuhomuhomuhomuhomuhomuhomuhomuhomu
標準ライブラリ、もしくは Boost を使用した場合、何を使用すると楽に書けるだろうか。