Bonjour,
En cherchant dans la FAQ/tuto, Nico-pyright(c) donne une façon de convertir une System::String^ en std::string:ailleurs, j'ai trouvé la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 std::string convertStringToStlString (String ^ chaine) { char * chaineChar; pin_ptr<const wchar_t> wch = PtrToStringChars(chaine); int taille = (chaine->Length+1) * 2; chaineChar = new char[taille]; int t = WideCharToMultiByte(CP_ACP, 0, wch, taille, NULL, 0, NULL, NULL); WideCharToMultiByte(CP_ACP, 0, wch, taille, chaineChar, t, NULL, NULL); std::string chaineSTL = chaineChar; delete chaineChar; return chaineSTL; }
Je voulais savoir s'il y avait une différence et si oui, y a-t-il des avantages/inconvénients à l'une ou l'autre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include <windows.h> #include <atlstr.h> ... std::string convertStringToStlString (String ^ chaine) { CString cChaine(chaine); std::string stlChaine(cChaine); return stlChaine; }
Ou encore s'il y a d'autres façons plus optimales pour effectuer cette conversion.
Merci![]()
Partager