c++ - 如何转换标准 :string to CString in unicode project

标签 c++ string visual-studio mfc

我有一个 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/

相关文章:

c++ - 哪个线程并行接口(interface)用于使用堆栈进行任务共享和拆分?

在C中按字母顺序比较字符串

r - 如何替换字符串中括号之间的逗号?

javascript - Texture2D 到 byte[] 到 String

C - Visual Studio 界面中的 printf

entity-framework - 为包管理器迁移操作指定 "project name"

c++ - 如何向量化这个程序

c++ - 有没有一种方法可以强制gradle一次只为一个项目编译c++代码(并且只有它)?

c++ - 构建 Boost BCP

c# - 如何处理运行 ASP.NET 应用程序时遇到的错误