簡體   English   中英

不能將boost :: stream與std :: string一起使用 <unsigned char> 實例化boost :: binary_oarchive或boost :: binary_iarchive

[英]Can't use boost::stream with std::string<unsigned char> to instanciate boost::binary_oarchive or boost::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 :: string緩沖區一起使用時,解決方案就會生成。

但是,我必須使用無符號字符類型的std :: basic_string作為緩沖區。 然后,該解決方案不再編譯:

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]

我無法確定到底是什么問題? 以及如何解決呢?

一些建議?

最好的祝福。

問題是不支持無符號字符流。

對此也沒有任何需要。 無論如何,事情都是二進制的。 任何在std::ios::binary模式下的流緩沖區都可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM