Как понимать data () метод boost :: array и возвращать add length? - PullRequest
0 голосов
/ 01 июля 2010
boost::array<char,7>  buf = {'a','b','c','d','e','f','g'};
...
...
std::cout << buf.data() + 5;

Это дисплей: фг

Как это понять?

buf.data () + 5

Спасибо

Ответы [ 2 ]

1 голос
/ 03 января 2013

buf.data() определено для возврата указателя на первый элемент массива, а элементы в Boost.Array определены как смежные.

Таким образом, buf.data() + 5 будет указателем на элемент (в данном случае, символ) массива. Вы также можете написать &buf[5] и получить тот же указатель.

Обратите внимание, что в коде выше:

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

вы пытаетесь напечатать значение указателя, а не символ, на который он указывает.

1 голос
/ 01 июля 2010

buf.data(), кажется, возвращает указатель на рассматриваемый внутренний буфер массива.

Оттуда применяется стандартная арифметика указателей, и вы видите шестой символ вперед в вызове std::cout.operator<<.

...