CString
相当方便,而 std::string
更兼容STL容器。我正在使用 hash_map
。 However, hash_map
does not support CString
s as keys, so I want to convert the CString
into a std::string
.
写一个 CString
哈希函数似乎需要很多时间。
CString -----> std::string
我怎样才能做到这一点?
std::string -----> CString:
inline CString toCString(std::string const& str)
{
return CString(str.c_str());
}
我对吗?
编辑:
这里有更多问题:
如何从 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
反之亦然?
原文由 user25749 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 CodeGuru :
CString
到std::string
:但是:
std::string
不能总是从LPCTSTR
构造。即 UNICODE 构建的代码将失败。As
std::string
can construct only fromLPSTR
/LPCSTR
, a programmer who uses VC++ 7.x or better can utilize conversion classes such asCT2CA
作为中介。std::string
到CString
: (来自 Visual Studio 的 CString FAQs… )CStringT
可以从字符或宽字符串构造。即它可以从char*
(即LPSTR
)或wchar_t*
(LPWSTR
)转换In other words, char-specialization (of
CStringT
) ieCStringA
,wchar_t
-specilizationCStringW
, andTCHAR
–specialization---
CString
可以从char
或宽字符构造,空终止(空终止在这里非常重要)字符串来源。Althoug IInspectable 修改了 评论中 的“null-termination”部分: