将 C 字符串转换为 Wstring
在 C 中,将字符串(或 char)转换为 wstring(或 wchar_t )允许您使用宽字符,这些字符用于表示非 ASCII 字符,例如日语汉字或西里尔字符。
使用标准库
对于UTF-8和UTF-16之间的转换,标准库提供了全面的解决方案:
#include <locale> #include <codecvt> #include <string> std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter; std::wstring wstr = converter.from_bytes("おはよう");
示例
以下示例演示此转换:
#include <iostream> int main() { std::string a = "Привет всем!"; std::wstring b = std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>>().from_bytes(a); std::cout << b << std::endl; return 0; }
输出:
Привет всем!
传统方法(已弃用)
请注意,codecvt 标头在 C 中已弃用17. 对于没有替换库的系统,可以使用旧版方法:
#include <wchar.h> wchar_t* wcs = (wchar_t*)MultiByteToWideChar(CP_UTF8, 0, a.c_str(), -1, NULL, 0);
但是,此方法可能无法正确处理某些 Unicode 字符。
以上是如何将 C 字符串转换为 Wstring?的详细内容。更多信息请关注PHP中文网其他相关文章!