bonjour à tous
je realise un projet mfc dans lequel j utilise plusieurs boites de dialogue.
dans une de ces boites je souhaite afficher des string dans une combobox.
pour cela je dois convertir des string en Cstring et inversement.
mon probleme est le suivant :
lors de la conversion Cstring en string,
<dir>CString szNomPrenom;
string NomPrenom(szNomPrenom);
apres compilation, le message d erreur suivant apparait:
c:\documents and settings\hp_propriétaire\bureau\itracking3\itracking\dialprofil.cpp(112) : error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it)' : impossible de convertir le paramètre 1 de 'CString' en 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it'
<dir>with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
pour convertir de string à CString : CString MyCString(Mystring); // avec Mystring de type string.
pour convertir de CString à string : string Mystring = MyCString.GetBuffer(); // avec MyCString de type CString.
je crois que c'est ça essaie. si d'autres veulent corriger...
c:\documents and settings\hp_propriétaire\bureau\itracking3\itracking\dialprofil.cpp(116) : error C2440: 'initialisation' : impossible de convertir de 'wchar_t *' en 'std::basic_string<_Elem,_Traits,_Ax>'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
j'ai fais le changement dans les propriétés.
j'ai encore une erreur :
<dir>c:\documents and settings\hp_propriétaire\bureau\itracking3\itracking\dialprofil.cpp(117) : error C2440: 'initialisation' : impossible de convertir de 'unsigned short *' en 'std::basic_string<_Elem,_Traits,_Ax>'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
Aucun constructeur n'a pu prendre le type de source, ou la résolution de la surcharge du constructeur était ambiguë
roooooh, essaie d'utiliser la fonction WideCharToMultiByte cf. MSDN pour transformer la chaine issue de GetBuffer de wchar en char car apparemment le problème est là.
annule également la manip dans les propriétés, pour revenir à l'erreur précédente.
sinon si ça ne te dérange pas outre mesure, tu peux aussi travailler en unicode, en créant un wstring au lieu d'un string comme ceci :