如何将 CStringW 转换为 LPCWSTR? [复制]
Posted
技术标签:
【中文标题】如何将 CStringW 转换为 LPCWSTR? [复制]【英文标题】:How to convert a CStringW into LPCWSTR? [duplicate] 【发布时间】:2016-06-03 07:10:26 【问题描述】:我有一个使用 CStringW 从 .rc 文件中检索资源的函数。 我想在sprintf_s中使用这个返回值,有什么办法吗?
//片段
sprintf_s(szMsgBoxText, LoadFromResource(IDS_INSTALLATION_COMPLETE), g_szProductName);
CStringW LoadFromResource(int ID)
CStringW m_resoucestring(MAKEINTRESOURCE(ID));
return m_resoucestring;
sprintf_s 给我一个错误。有什么替代方法吗?
【问题讨论】:
@MSalters:建议的副本不是。它要求在 ANSI 和 Unicode 字符串之间进行 转换。这个问题询问如何将 UnicodeCStringW
转换为指向其内部宽字符缓冲区的指针。不涉及任何转化。
【参考方案1】:
使用与sprintf_s
完全相同的CStringW::Format
。所以你的代码会变成:
CStringW sText;
sText.Format(LoadFromResource(IDS_INSTALLATION_COMPLETE), g_szProductName);
甚至
CStringW sText;
sText.Format(IDS_INSTALLATION_COMPLETE, g_szProductName);
您可以将CStringW
直接传递给任何接受LPCWSTR
类型参数的函数,因为它具有相应的强制转换运算符。
【讨论】:
以上是关于如何将 CStringW 转换为 LPCWSTR? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
error C2664: “CreateFileW”: 不能将参数 1 从“char *”转换为“LPCWSTR”
将字符串转换为 LPCWSTR 以用于 CreateFile() 以寻址串行端口
C++,有没有可以将LPCWSTR类型转换成string的简单点的方法?
求助:error C2664: “CreateWindowExW”: 不能将参数 3 从“const char [8]”转换为“LPCWSTR”