CString
es bastante útil, mientras que std::string
es más compatible con el contenedor STL. Estoy usando hash_map
. Sin embargo, hash_map
no admite CString
como clave, por lo que quiero convertir CString
en std::string
.Cómo convertir CString y :: std :: string :: std :: wstring entre sí?
Escribir una función de hash CString
parece tomar mucho tiempo.
CString -----> std::string
¿Cómo puedo hacer esto?
std::string -----> CString:
inline CString toCString(std::string const& str)
{
return CString(str.c_str());
}
Am I right?
EDIT:
Aquí hay más preguntas:
¿Cómo puedo convertir wstring
, CString
el uno al otro?
//wstring -> CString,
std::wstring src;
CString result(src.c_str());
//CString->wstring.
CString src;
::std::wstring des(src.GetString());
¿Hay alguna problema?
¿Cómo puedo convertir std::wstring
, std::string
entre sí?
No haría esto ... ¿Usar dos tipos de cadenas diferentes es suficientemente malo, pero tener que convertir cada vez que hace algo con un mapa? Suena terrible. Simplemente sea consistente y use std :: string. Si por alguna razón realmente crees que CString es mejor, entonces define una función hash para que tu hash_map pueda usarlo, esto es mucho mejor que duplicar la confusión en tu código. – GManNickG
En realidad, si todo el código está escrito por mí, será coherente, pero hay algunos proyectos de fuente abierta, como sqlite de libre utilización. No puedo modificar el código. – user25749