繁体   English   中英

如何在unicode项目中将std:string转换为CString

[英]How to convert std:string to CString in unicode project

我有一个std::string 我需要将此std:string转换为Cstring

我尝试使用.c_str()但它只用于非unicode项目,我使用unicode项目(因为非unicode项目与VS2013一起被删除)。

任何人都可以展示我如何在unicode项目中将std::string转换为CString

CString有一个带有const char*CStringT::CStringT )的转换构造const char* std::string转换为CString非常简单:

std::string stdstr("foo");
CString cstr(stdstr.c_str());

这适用于UNICODE和MBCS项目。 如果std::string包含嵌入的NUL字符,则必须使用带有length参数的转换构造函数:

std::string stdstr("foo");
stdstr += '\0';
stdstr += "bar";
CString cstr(stdstr.c_str(), stdstr.length());

请注意,转换构造函数隐式使用当前线程的ANSI代码页( CP_THREAD_ACP )来转换ANSI和UTF-16编码。 如果您不能(或不想)更改线程的ANSI代码页,但仍需要指定用于转换的显式代码页,则必须使用其他解决方案(例如ATL和MFC字符串转换宏 )。

使用ATL转换宏。 当你使用CString时,它们适用于所有情况。 CString是MBCS或Unicode ...取决于您的编译器设置。

std::string str = "string";
CString ss(CA2T(str.c_str());

Unicode CString的构造函数接受char*所以你可以这样做:

std::string str = "string";
CString ss(str.c_str());

奖励:如果您经常使用转换,您可以定义一个宏:

#define STDTOCSTRING(s) CString(s.c_str())

所以你的代码更具可读性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM