std :: stringを含む任意のSTLクラスをシリアル化できますか?私はstd :: stringsのセットを持っていて、ファイルに書き込んでstd :: setに戻そうとしています。STLクラスのシリアル化
答えて
はい、可能です。例えば、boost.serializationとなります。 STLについては
、あなただけのファイルにstd::set<std::string>
を書き、裏にそれを読んで、あなたのプロジェクトがすでにブーストを使用していないしたい場合は、シンプルなものを試してみてくださいcorresponding tutorial section
をお読みください。
ofstream file("file.txt");
copy(theSet.begin, theSet.end(), ostream_iterator<string>(file, "\n"));
これは、文字列を1行に1つずつテキストファイルに書き込むだけです。そして、それらを読むために:
ifstream file("file.txt");
string line;
while(getline(file, line))
theSet.insert(line);
これらの文字列に改行が含まれているとどうなりますか?それは非常に悪い考えです... –
もちろん、文字列に改行が含まれていれば、これは動作しません。私はOPの賭けをしても構わないと思う。 –
代わりにヌル文字で区切りますか? Cの文字列は通常それらを含んでいません。 –
ブーストを使用する例を::
g++ -lboost_serialization myfile.cc
注意してSTLタイプ
#include <map>
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/map.hpp>
int main(int argc,char** argv) {
std::ofstream s("tmp.oarchive");
boost::archive::text_oarchive oa(s);
std::map<int,int> m;
m[1] = 100;
m[2] = 200;
oa << m;
}
コンパイルをシリアル化するためにシリアライズ
- こと
#include <boost/archive/text_iarchive.hpp>
は他のものの前にある必要がありますシリアル化にはが含まれます。 - アーカイブするSTLタイプのヘッダーを含める必要があります。
これを確認してください。 liteの十分な
ONLY ONE CPPファイルNEEDED
が、そこにサポートのシリアル化を行うはlibいくつかのprotobufferのように、ブーストがある
liteのシリアル化ソリューション:シリアライズ、私にとっては重すぎます。私はこのライト版を書いた。
サポート
- ベクトル
- マップ
- 文字列
- プリミティブ(int型、ダブル、ロング、...)
- エンディアンサポート
- ネスティングコンテナサポートを設定します
使用文字の代わりにBOOL STL why
であなたはCMakeのことで、このプロジェクトをビルドすることができます
を構築します。あなたのプロジェクトにserialization.hをインポートするだけです。
はCHECK_ENDIAN = 1であれば、あなたのwannaチェックエンディアンデモ
チェックtestSerialization.cpp
来のSOOM
エンディアン変換定義します。
- 1. C++クラスのシリアル化
- 2. シリアル化可能クラスに含まれるオブジェクト型enumのシリアル化
- 3. リファレンスカウントポインタのSTLクラス?
- 4. フラグをシリアル化/逆シリアル化する組み込みクラス
- 5. stl C++:クラス内のクラス
- 6. クラス内のXMLの逆シリアル化
- 7. Jsonのクラスへの逆シリアル化
- 8. Xmlのシリアル化基底クラスの属性
- 9. GSON-JSONクラス内のオブジェクトの逆シリアル化
- 10. WCFアプリケーションのDirectoryServices.AccountManagement拡張クラスのシリアル化
- 11. 同じクラス名のGson逆シリアル化
- 12. ネストされたクラスのシリアル化
- 13. シリアル化のBitmapImageやXMLSERIALIZE Silverlightでクラスに
- 14. Gsonから内部クラスのpojoシリアル化
- 15. 逆シリアル化の逆シリアル化
- 16. DataContractSerializerで基本クラスのプロパティのみをシリアル化/逆シリアル化する方法
- 17. クラスをシリアル化できません。
- 18. クラスをxsdにプログラムでシリアル化
- 19. BsonDocumentオブジェクトを逆シリアル化してクラス
- 20. シリアル化と逆シリアル化 - ソケットプログラミング
- 21. WPF BitmapImageシリアル化/逆シリアル化
- 22. Javascript Canvasシリアル化/逆シリアル化?
- 23. GeometryDrawingシリアル化/逆シリアル化
- 24. WCFシリアル化と逆シリアル化
- 25. Android HashMapシリアル化/逆シリアル化
- 26. iOS:NSObjectクラスから複雑なJSONを総称的にシリアル化/逆シリアル化
- 27. GSONでインターフェイスを実装するクラスをシリアル化/逆シリアル化できません
- 28. カレンダーのシリアル化の逆シリアル化
- 29. ZonedDateTimeのジャクソンのシリアル化/逆シリアル化
- 30. クラスのC++ STLセット - コンパイラエラーエラーC2664
私は文字列で行うことができました。たとえば、セットで直接行うことはできますか? – user963241
@cpx: '#include ' –
Abyx
彼はSTLコンテナを持つクラスを作る例は望んでいません。彼はSTLコンテナを取得してファイル。 –