如何理解boost :: array的data()方法,并返回添加长度?

时间:2010-06-30 21:12:44

标签: boost

boost::array<char,7>  buf = {'a','b','c','d','e','f','g'};
...
...
std::cout << buf.data() + 5;

显示:fg

如何理解?

  

buf.data()+ 5

由于

2 个答案:

答案 0 :(得分:1)

buf.data()似乎返回一个指向内部数组缓冲区的指针。

从那里开始,应用标准指针算法,然后在std::cout.operator<<调用中看到第6个字符。

答案 1 :(得分:1)

buf.data()被定义为返回指向数组的第一个元素的指针,并且Boost.Array中的元素被定义为连续的。

因此buf.data() + 5将是指向数组元素(在本例中为字符)的指针。 您也可以编写&buf[5]并获得相同的指针。

请注意,在上面的代码中:

std::cout << buf.data() + 5;

您正在尝试打印指针的值,而不是它指向的字符。