Буферы - это просто массив байтов (здесь они печатаются в шестнадцатеричном формате от 00 до ff или от 0 до 255.
Вы можете представить любой файл в виде байтового массива, фактически fs.writeFile может напрямую принимать буфер. [ 112]
Вы можете преобразовать его в строку.
Проверьте это в официальной документации https://nodejs.org/api/buffer.html
Используйте get()
метод:
boost::shared_ptr<foo> foo_ptr(new foo());
foo *raw_foo = foo_ptr.get();
c_library_function(raw_foo);
Удостоверяются, что Ваш shared_ptr
не выходит из объема, прежде чем библиотечная функция будет сделана с ним - иначе, вредность могла закончиться, так как библиотека может попытаться сделать что-то с указателем после того, как он был удален. Будьте особенно осторожны, если библиотечная функция поддерживает копию необработанного указателя после того, как это возвращается.
Другой способ сделать это состоял бы в том, чтобы использовать комбинацию &
и *
операторы:
boost::shared_ptr<foo> foo_ptr(new foo());
c_library_function( &*foo_ptr);
, В то время как лично я предпочел бы использовать get()
метод (это - действительно правильный ответ), одно преимущество, которое это имеет, состоит в том, что это может использоваться с другими классами, которые перегрузка operator*
(указатель разыменовывают), но не обеспечивает get()
метод. Могло бы быть полезным в универсальном шаблоне класса, например.