[C++/CLI]Operateur << avec un flux std::ostream et une String managée
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 :
Code:
1 2 3 4 5 6
| static ostream& operator<< (ostream& tmpOss, System::String^ message)
{
string system = StringMarshaler::MarshalToNative(message);
tmpOss << system;
return tmpOss;
} |
La méthode StringMarshaler::MarshalToNative transforme une string managée system::String^ en std::string. Voici le code si ca peut vous interesser :
Code:
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;
}
} |
Le problème c'est que ca ne marche pas tres bien :aie:, 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