- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如标题所述,我需要一种将 PWCHAR 转换为 std::string 的方法。我可以在网上找到的唯一解决方案是用于相反的转换,所以如果有人能对此有所了解,我真的很喜欢。谢谢!
这是在 C++ 中。
最佳答案
根据 this MSDN page , PWCHAR
声明如下:
typedef wchar_t WCHAR, *PWCHAR;
你要的是std::wstring
, declared in string
.
const PWCHAR pwc;
std::wstring str(pwc);
std::wstring
与 std::string
非常相似,因为两者都是 std::basic_string
的特化;区别在于wstring
使用wchar_t
(Windows WCHAR
),而string
使用char
.
如果您真的想要一个string
(并且不是一个wstring
),建议的C++方法是使用 use_facet
如所见here :
const std::locale locale("C");
const std::wstring src = ...;
const std::string dst = ...;
std::use_facet<std::ctype<wchar_t> >(loc)
.narrow(src.c_str(), src.c_str() + src.size(), '?', &*dst.begin());
您也可以单独转换为多字节 C 字符串,然后使用它来构建您的 std::string
。但是,这不是在 C++ 中执行此操作的首选方法。执行此操作的函数是 wcstombs
, 如下声明:
size_t wcstombs ( char * mbstr, const wchar_t * wcstr, size_t max );
因为你在 Windows 上,你也可以使用 WideCharToMultiByte
对于这一步。
int WideCharToMultiByte(
__in UINT CodePage,
__in DWORD dwFlags,
__in LPCWSTR lpWideCharStr,
__in int cchWideChar,
__out_opt LPSTR lpMultiByteStr,
__in int cbMultiByte,
__in_opt LPCSTR lpDefaultChar,
__out_opt LPBOOL lpUsedDefaultChar
);
LPSTR
根据MSDN定义如下:
typedef CHAR *LPSTR;
typedef char CHAR;
关于c++ - PWCHAR 转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11854336/
如标题所述,我需要一种将 PWCHAR 转换为 std::string 的方法。我可以在网上找到的唯一解决方案是用于相反的转换,所以如果有人能对此有所了解,我真的很喜欢。谢谢! 这是在 C++ 中。
我有一个用 C++ 编写的 dll,我想从 C# 调用它。该函数输出outputChar和deadChar,deadChar变量也被C++函数读取。 我尝试以不同的方式从 C# 调用函数,但每次我都收
我正在试验 Windows 驱动程序并使用 Microsoft 的驱动程序代码示例(确切地说是 Minispy)。不幸的是,我是 C++ 的新手,尤其是驱动程序开发。 在将用户模式应用程序从 C 转换
我是一名优秀的程序员,十分优秀!