2011-10-24 71 views
3

我想在boost :: serialization的同一臺Windows機器上,在32位進程和64位進程之間序列化一些數據結構。boost :: serialization - 是否有一種可移植的方式來二進制序列化std :: wstrings?

This answer建議使用EOS :: portable_iarchive,但是當我嘗試,我得到了一個STATIC_ASSERT失敗:

// implementation only valid for narrow string 
BOOST_STATIC_ASSERT(sizeof(C) == sizeof(char)); 

是否有不同的方式來做到這一點(要比text_iarchive其他什麼,我不希望用於性能考慮)還支持std :: wstrings?

+0

什麼版本的Boost? –

+0

最好1.47 /最新,但我會採取我能得到的任何建議。 –

回答

1

從我讀過的內容來看,序列化寬字符串的標準方法是首先將它們編碼爲UTF-8窄字符串。不過,這可能比你想要的更多。

在Boost.Serialization示例目錄中有一個可移植的二進制歸檔文件的替代實現。 Boost.Serialization documentation使它聽起來像它最大的缺點是缺乏便攜式浮點支持和缺乏嚴格的測試,所以如果你不需要便攜式浮游物,它可能會滿足你的需求。

我不知道你是否看過其他序列化庫,但有幾種選擇,包括libs11nProtocol Buffers。 (就個人而言,既使用了Boost.Serialization和Protocol Buffers,我更喜歡Protocol Buffers。)

+0

奇怪我錯過了在boost示例文件夾中的portable_binary_archive。在Windows下的混合32/64位環境中使用它似乎工作正常。謝謝! –

相關問題