CString
весьма удобен, а std::string
более совместим с контейнером STL. Я использую hash_map
. Однако hash_map
не поддерживает CString
как ключ, поэтому я хочу преобразовать CString
в std::string
.Как конвертировать CString и :: std :: string :: std :: wstring друг к другу?
Написание функции хеша CString
, кажется, занимает много времени.
CString -----> std::string
Как это сделать?
std::string -----> CString:
inline CString toCString(std::string const& str)
{
return CString(str.c_str());
}
Я прав?
EDIT:
Вот еще вопросы:
Как я могу конвертировать wstring
, CString
друг с другом?
//wstring -> CString,
std::wstring src;
CString result(src.c_str());
//CString->wstring.
CString src;
::std::wstring des(src.GetString());
Есть ли любой проблема?
Как можно преобразовать std::wstring
, std::string
друг другу?
Я бы этого не сделал ... Использование двух разных типов строк достаточно плохо, но нужно конвертировать каждый раз, когда вы что-то делаете с картой? Звучит ужасно. Просто будьте последовательны и используйте std :: string. Если по какой-то причине вы действительно думаете, что CString лучше, то определите хеш-функцию для него, чтобы ваш hash_map мог ее использовать, это намного лучше, чем удвоение запутанности в вашем коде. – GManNickG 2009-07-12 15:13:56
На самом деле, если весь код написан сам, он будет последовательным, но есть некоторые проекты с открытым доступом, такие как freeimage sqlite. Я не могу изменить код. – user25749 2009-07-13 01:21:44