Bonjour,
Je cherche a surchargé l'operateur << pour un flux de type std::ostream pour y concaténé une string managé de type System::String^.
Voici l'implementation :
La méthode StringMarshaler::MarshalToNative transforme une string managée system::String^ en std::string. Voici le code si ca peut vous interesser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 static ostream& operator<< (ostream& tmpOss, System::String^ message) { string system = StringMarshaler::MarshalToNative(message); tmpOss << system; return tmpOss; }
Le problème c'est que ca ne marche pas tres bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ref class StringMarshaler { public: static std::string MarshalToNative(System::String^ s) { char* ret=static_cast<char*>(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(s).ToPointer()); std::string sret=ret; System::Runtime::InteropServices::Marshal::FreeHGlobal((System::IntPtr)ret); return sret; } }, il ajoute dans mon flux une adresse de pointeur au lieu du contenu de la string. Je voulais savoir si on peut écrire ce genre d'operateur.
Merci d'avance
Partager