我有一个 std::string
。
我需要将此 std:string
转换为 Cstring
。
我尝试使用 .c_str()
但它仅适用于非 unicode 项目,我使用 unicode 项目(因为非 unicode 项目已被 VS2013 弃用)。
任何人都可以告诉我如何在 unicode 项目中将 std::string
转换为 CString
吗?
最佳答案
CString
有一个采用 const char*
(CStringT::CStringT
) 的转换构造函数。将 std::string
转换为 CString
非常简单:
std::string stdstr("foo");
CString cstr(stdstr.c_str());
这适用于 UNICODE 和 MBCS 项目。如果您的 std::string
包含嵌入的 NUL
字符,则必须使用带有长度参数的转换构造函数:
std::string stdstr("foo");
stdstr += '\0';
stdstr += "bar";
CString cstr(stdstr.c_str(), stdstr.length());
请注意,转换构造函数隐式使用当前线程的 ANSI 代码页 (CP_THREAD_ACP
) 在 ANSI 和 UTF-16 编码之间进行转换。如果您不能(或不想)更改线程的 ANSI 代码页,但仍需要指定用于转换的显式代码页,则必须使用其他解决方案(例如 ATL and MFC String Conversion Macros)。
关于c++ - 如何转换标准 :string to CString in unicode project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19616828/