string konvertieren für boost
-
Hallo,
gibt es eine einfache Möglichkeit std::list<CString> in std::liststd::string zu konvertieren um anschließend mit boost arbeiten zu können?
Danke schonmal
-
Direkt mit std::string arbeiten?
-
-
leider wurde viel mit MFC datentypen in dem projekt gearbeitet, was ich jetzt nicht alles auf einmal umstellen kann. Speziell möchte ich das Makro BOOST_SERIALIZATION_NVP aufrufen. Was ich bei google bisher gefunden habe, hat nicht funktioniert.
-
cpp-newbie-cli schrieb:
gibt es eine einfache Möglichkeit std::list<CString> in std::liststd::string zu konvertieren um anschließend mit boost arbeiten zu können?
So:
#include <algorithm> // transform #include <iterator> // back_inserter #include <list> std::string makeStdStr( const CString& s ) { return std::string( static_cast< const char* >( s ) ); } // .. im Code using namespace std; list< CString > l1; // l1 füllen ... list< string > l2; // zunächst leer transform( l1.begin(), l1.end(), back_inserter( l2 ), &makeStdStr );
-
Vielen Dank, das funktioniert soweit. Umgekehrt konvertiere ich dann so:
return CString( static_cast<const char*>( s.c_str() ), s.length());
Ich hoffe das dies die einfachste Methode ist boost eine std::list<CString> für die Serialisierung zu übergeben.
-
Was bringt denn deiner Meinung nach ein static_cast von
const char*
nachconst char*
? Was genau macht c_str und ist das wirklich das, was du hier willst? Wenn du selber Code schreibst, dann musst du ihn auch verstehen. Jedes einzelne Zeichen! Programmieren ist nicht, Beispielcodes aus dem Internet zusammen zu kopieren und leicht abzuändern.
-
Öhhh ... zum Serialisieren musst du nichts konvertieren!
http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/tutorial.html#nonintrusiveversion
-
Den Datentyp std::list<CString> kann boost nicht einfach serialisieren, oder doch?