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

我必须同意上面的 Naveen。在在线编译器中尝试此代码时没有问题。请参阅http://codepad.org/PwDtkUEu 在此处输入图像描述 您遇到的任何问题都必须由您的编译器引起。尝试重建您的项目。

于 2012-04-23T04:43:21.043 回答