void write<typename T>(const T&)
T オブジェクトを ostream に書き込むという点で実装されている関数T read<typename T>()
と、istream から T を読み取る一致する関数があります。私は基本的に iostreams をプレーン テキストのシリアル化形式として使用しています。これは明らかにほとんどの組み込み型でうまく機能しますが、std::strings を効果的に処理する方法はまだわかりません。
オブジェクトのシーケンスも書き出せるようにしたいと考えています。たとえばvoid write<typename T>(const std::vector<T>&)
、イテレータ ベースの等価物 (ただし、実際には、常にベクトルで使用されます)。ただし、要素を繰り返し処理してそれらを書き出すオーバーロードを作成するのは簡単ですが、一致する読み取り操作で各要素がどのように区切られているかを知るのに十分な情報が追加されません。これは本質的には同じ問題です。単一の std::string を持っています。
すべての基本型と std::string で機能する単一のアプローチはありますか? それとも、数値型用と文字列用の 2 つのオーバーロードで問題を解決できるでしょうか? (おそらく、異なる区切り文字を使用するか、区切り文字エスケープメカニズムを使用して文字列を使用します。)
編集:このような質問に直面したとき、「あなたはそれをしたくない」と言って、より良いアプローチを提案するという賢明な傾向があることを理解していますが、むしろ私が尋ねたことに直接関連する提案が本当に欲しいです。代わりに私が尋ねるべきだったとあなたが信じていることよりも。:)