0

ここでやろうとしているrepeatのは、文字列と正の整数 n を受け取り、その文字列を n 回繰り返して返す関数を作成することです。したがってrepeat("fho", 3)、文字列「hohoho」が返されます。ただし、以下のテスト プログラムは実行されますが、結果が表示されなかったりハングしたりしません。システムの一時停止を追加しようとしましたが、役に立ちませんでした。私は何が欠けていますか?

#include <string>
#include <iostream>
std::string repeat( const std::string &word, int times ) {
   std::string result ;
   result.reserve(times*word.length()); // avoid repeated reallocation
   for ( int a = 0 ; a < times ; a++ ) 
      result += word ;
   return result ;
}

int main( ) {
   std::cout << repeat( "Ha" , 5 ) << std::endl ;
   return 0 ;
}
4

2 に答える 2

3

あなたのコードは機能しているようですが、個人的には少し違った書き方をしたいと思います:

std::string repeat(std::string const &input, size_t reps) { 
    std::ostringstream result;

    std::fill_n(
        std::ostream_iterator<std::string>(result), 
        reps, 
        input);

    return result.str();
}
于 2012-04-23T04:43:47.693 に答える
0

上記のナビーンに同意する必要があります。オンライン コンパイラで試した場合、このコードに問題はありません。http://codepad.org/PwDtkUEu を参照ここに画像の説明を入力 してください。問題が発生した場合は、コンパイラが原因である必要があります。プロジェクトを再構築してみてください。

于 2012-04-23T04:43:21.043 に答える