boost::array<char,7> buf = {'a','b','c','d','e','f','g'};
...
...
std::cout << buf.data() + 5;
显示:fg
如何理解?
buf.data()+ 5
由于
答案 0 :(得分:1)
buf.data()
似乎返回一个指向内部数组缓冲区的指针。
从那里开始,应用标准指针算法,然后在std::cout.operator<<
调用中看到第6个字符。
答案 1 :(得分:1)
buf.data()
被定义为返回指向数组的第一个元素的指针,并且Boost.Array中的元素被定义为连续的。
因此buf.data() + 5
将是指向数组元素(在本例中为字符)的指针。
您也可以编写&buf[5]
并获得相同的指针。
请注意,在上面的代码中:
std::cout << buf.data() + 5;
您正在尝试打印指针的值,而不是它指向的字符。