转发器问题:(

时间:2012-04-23 04:11:25

标签: c++ string

我在这里尝试做的是编写一个函数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 ;
}

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

我必须同意上面的Naveen。在在线编译器中尝试时,此代码没有问题。见http://codepad.org/PwDtkUEu enter image description here 您遇到的任何问题都必须归功于您的编译器。尝试重新制作你的项目。