2012-08-06 76 views
1

在PHP我记得我可以这样做子或打印阵列高达在C++

substr(string,start,length)

的位置NUM现在我宣布

int array[20];

我怎么能只打印它的一部分没有使用for循环

例如。

cout << array[1 to 5] << "Here is the breaking point" << array[15 to 20] << endl;

像这样的事情

我还记得,如果它是printf会有类似^5或类似说法高达5

+0

您可以使用[漂亮的打印](http://louisdx.github.com/cxx-prettyprint/):'性病::法院<< pretty_print_array(array + 3,6)<< std :: endl;' – 2012-08-06 16:56:39

回答

6

您可以使用ostream_iteratorcopy组合(link to ideone ):

#include <iostream> 
#include <iterator> 
#include <algorithm> 

using namespace std; 

int main() { 
    int array[] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; 
    ostream_iterator<int> out_it (cout," "); 
    copy (array+3, array+6, out_it); 
    return 0; 
} 

array+3语法可能看起来很不寻常:这是一个相当于&array[3]的指针表达式,它产生一个指针。由于您可以在C标准库期望一对迭代器的地方传递一对数组指针,因此会产生预期的结果。

3

你可以复制到一个ostream迭代器:

std::copy(array, array+5, std::ostream_iterator(std::cout, " ")); 
std::cout << "Here is the breaking point"; 
std::copy(array+15, array+20, std::ostream_iterator<int>(std::cout, " "));