Comment convertir CString et ::std::string ::std::wstring les uns les autres?

CString est très pratique, tout en std::string est plus compatible avec les conteneur STL.
Je suis à l'aide de hash_map. Cependant, hash_map ne prend pas en charge CString sous forme de clé, donc je veux convertir CString en std::string.

L'écriture d'un CString fonction de hachage semble prendre beaucoup de temps.

CString -----> std::string

Comment puis-je faire cela?

std::string -----> CString:

inline CString toCString(std::string const& str)
{
    return CString(str.c_str()); 
}

Suis-je droit?


EDIT:

Voici plus de questions:

Comment puis-je convertir wstring, CString les uns les autres?

//wstring -> CString,
std::wstring src;
CString result(src.c_str());
//CString->wstring. 
CString src;
::std::wstring des(src.GetString());

Est-il tout problème?

Comment puis-je convertir std::wstring, std::string les uns les autres?

  • Je ne voudrais pas le faire... à l'Aide de deux cordes différentes types est assez mauvaise, mais avoir à les convertir à chaque fois que vous faites quelque chose avec une carte? Le son est terrible. D'être cohérente et de les utiliser std::string. Si pour quelque raison vous pensez vraiment CString est mieux, puis de définir une fonction de hachage pour vos classes hash_map pouvez l'utiliser, c'est beaucoup mieux que le doublement de la confusion dans votre code.
  • En fait, Si tout le code est écrit par moi, il sera compatible, mais il y a quelques opensourced projet comme freeimage sqlite utilisé. Je ne peux pas modifier le code.
  • J'ai répondu à un contemporain de réponse (VS2017 MFC ...Depuis VS2012)
InformationsquelleAutor user25749 | 2008-11-03