CString
ist ziemlich praktisch, während std::string
ist mehr kompatibel mit STL-Container. Ich verwende hash_map
. hash_map
unterstützt jedoch nicht CString
als Schlüssel, daher möchte ich CString
in std::string
konvertieren.Wie CString und :: Std :: string :: std :: wstring miteinander zu konvertieren?
Schreiben einer CString
Hash-Funktion scheint eine Menge Zeit zu dauern.
CString -----> std::string
Wie kann ich das tun?
std::string -----> CString:
inline CString toCString(std::string const& str)
{
return CString(str.c_str());
}
Bin ich richtig?
EDIT:
Hier sind weitere Fragen:
Wie kann ich wstring
, CString
miteinander konvertieren?
//wstring -> CString,
std::wstring src;
CString result(src.c_str());
//CString->wstring.
CString src;
::std::wstring des(src.GetString());
Gibt es irgendein Problem?
Wie kann ich std::wstring
, std::string
miteinander konvertieren?
Ich würde das nicht tun ... Die Verwendung von zwei verschiedenen Stringtypen ist schlimm genug, aber jedes Mal, wenn Sie etwas mit einer Karte machen, konvertieren müssen? Hört sich schrecklich an. Sei einfach konsistent und verwende std :: string. Wenn Sie aus irgendeinem Grund wirklich denken, CString ist besser, dann definieren Sie eine Hash-Funktion für sie, so dass Ihre hash_map es verwenden kann, das ist weit besser als die Verdoppelung in Ihrem Code zu verdoppeln. – GManNickG
Eigentlich, wenn alles Code von mir selbst geschrieben wird, wird es konsistent sein, aber es gibt einige OpenSourced-Projekt wie freeimage SQLite verwendet. Ich kann den Code nicht ändern. – user25749