2016-02-18 12 views
0
разработчик

Cheer,Невозможно использовать повышение :: поток с станд :: строки <неподписанные символ> создать экземпляр подталкивание :: binary_oarchive или повышение :: binary_iarchive

я есть проблемы со следующим кодом (Visual Studio 2015 компилятор):

template<typename SERIALIZABLE_TYPE, typename BUFFER_TYPE> 
inline void Serialize::IntoStringBuffer(const SERIALIZABLE_TYPE& object, BUFFER_TYPE& strBuffer) 
{ 
    back_insert_device<BUFFER_TYPE> inserter(strBuffer); 
    stream<back_insert_device<BUFFER_TYPE>> aStream(inserter); 

    binary_oarchive binaryOutArchive(aStream); 
    binaryOutArchive & object; 

    aStream.flush(); 
} 

template<typename SERIALIZABLE_TYPE, typename BUFFER_TYPE> 
inline void Types::Serialize::FromStringBuffer(const BUFFER_TYPE& strBuffer, SERIALIZABLE_TYPE& object) 
{ 
    basic_array_source<typename BUFFER_TYPE::value_type> arraySource(strBuffer.data(), strBuffer.size()); 
    stream<basic_array_source<typename BUFFER_TYPE::value_type>> aStream(arraySource); 

    binary_iarchive binaryInArchive(aStream); 
    binaryInArchive & object; 
} 

Когда я использую эти хелперы с объектом сериализации и станд :: строкового буфера, сборки раствора.

Однако, я должен использовать std :: basic_string с unsigned char type в качестве буфера. Тогда решение не компилируется больше:

error C2664: 'boost::archive::binary_iarchive::binary_iarchive(const boost::archive::binary_iarchive &)' : impossible de convertir l'argument 1 de 'boost::iostreams::stream<boost::iostreams::basic_array_source<unsigned char>,std::char_traits<_Elem>,std::allocator<_Ty>>' en 'std::istream &' with[_Elem=unsigned char,_Ty=unsigned char] 

и

error C2664: 'boost::archive::binary_oarchive::binary_oarchive(const boost::archive::binary_oarchive &)' : impossible de convertir l'argument 1 de 'boost::iostreams::stream<boost::iostreams::back_insert_device<BUFFER_TYPE>,std::char_traits<_Elem>,std::allocator<_Ty>>' en 'std::ostream &' with [ BUFFER_TYPE=std::basic_string<unsigned char>, _Elem=unsigned char, _Ty=unsigned char] 

я был не в состоянии определить, какая именно проблема? и как его решить?

Некоторые советы?

С уважением.

ответ

0

Проблема в том, что неподписанные потоки символов не поддерживаются.

В этом нет необходимости. Все равно двоично. Любой буфер потока в режиме std::ios::binary будет работать.