2013-06-28 4 views
2

Итак, у меня есть: boost :: array data_;Boost Array - преобразование в BYTE

Как преобразовать его в обычный буфер BYTE/Char или как распечатать данные внутри без его преобразования, используя printf?

Как я могу сравнить его с другим обычным буфером для хрусталя, например, «привет». Также очень полезно знать, как работает boost :: array, (я создаю boost async.tcp server).

Я пробовал некоторые вещи, но мне не удалось напечатать символы внутри буфера, я новичок в повышении.

Я не смог найти много документации о повышении.

спасибо.

ответ

1

Класс boost :: array - это параметризованный тип, что означает, что полное имя типа переменной этого типа является чем-то вроде boost::array<char,10> для массива, содержащего 10 элементов типа char, или boost::array<float,100> для массива, содержащего 100 элементов тип float.

Если вам посчастливилось иметь переменную data_ некоторого типа boost::array<T,N> где T является char, то распечатывания символы легко:

std::cout.write(data_.data(), data_.size()); 

Если T является wchar, вы можете сделать

std::wcout.write(data_.data(), data_.size()); 

Если ваш конкретный тип boost::array содержит какой-либо другой элемент типа T, вам нужно подумать о том, как вы хотите распечатать элементы. Например, если ваш доволен потока по умолчанию представления типа на, вы можете сделать что-то вроде

for (auto element : _data) { 
    std::cout << element << "\n"; 
} 

распечатать один элемент в каждой строке.

Вы можете найти документацию к классу boost::array по адресу http://www.boost.org/doc/libs/1_53_0/doc/html/boost/array.html