2012-04-23 8 views
0

私がここでやろうとしているのは、文字列と正の整数nを受け入れ、その文字列をn回繰り返す関数repeatを書くことです。したがって、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 ; 
} 
+1

あなたは試してみました、あなたが期待通りにそれらがどのように動作しませんでしたどのような入力? – sarnold

+2

このコードは正しく実行されます。ここを参照してください:http://ideone.com/eISah – Naveen

+4

私はあなたがWindows上にいると思います。 cmd.exeを開き、プログラムをダブルクリックするのではなくコマンドラインから起動してみてください。プログラムが終了するとウィンドウが消えないようにします。 – zmccord

答えて

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(); 
} 
+0

ありがとう、ありがとう私はそれを感謝します私はコンピュータプログラミングと科学181時々あなたはハードな方法を最初に学ぶ –

0

私は上記のNaveenに同意する必要があります。問題はありませんオンラインコンパイラでこのコードを試してみてください。http://codepad.org/PwDtkUEu enter image description here コンパイラが原因で問題が発生している可能性があります。あなたのプロジェクトを膨らませる。

+0

Ty :)私は助けを感謝します –

+0

@KcNorth: "Ty :)私は助けていただきありがとうございます "答えの左側にあるチェックボックスの輪郭をクリックすることで最もよく表現されます"](http://stackoverflow.com/faq#howtoask)。 – Johnsyweb