首页 > 后端开发 > C++ > 如何在 C 中有效地将'wstring”转换为'string”?

如何在 C 中有效地将'wstring”转换为'string”?

DDD
发布: 2024-12-14 15:08:11
原创
699 人浏览过

How can I efficiently convert a `wstring` to a `string` in C  ?

将 wstring 转换为 C 中的字符串

问题

如何将 wstring 转换为 C 中的字符串?考虑以下示例:

#include <string>
#include <iostream>

int main() {
    std::wstring ws = L"Hello";
    std::string s(ws.begin(), ws.end());

    std::cout << "std::string =     " << s << std::endl;
    std::wcout << "std::wstring =    " << ws << std::endl;
    std::cout << "std::string =     " << s << std::endl;
}
登录后复制

使用注释掉的行,输出为:

std::string =     Hello
std::wstring =    Hello
std::string =     Hello
登录后复制

但是,如果没有注释,输出仅为:

std::wstring =    Hello
登录后复制

回答

使用 std::wstring_convert (C 11)

正如 Cubbi 所指出的,std::wstring_convert 提供了一个简单的解决方案:

#include <locale>
#include <codecvt>

std::wstring string_to_convert;

using convert_type = std::codecvt_utf8<wchar_t>;
std::wstring_convert<convert_type, wchar_t> converter;

// Convert wstring to string
std::string converted_str = converter.to_bytes(string_to_convert);
登录后复制

您还可以使用辅助函数来简化转换:

// Convert string to wstring
std::wstring s2ws(const std::string& str) {
    using convert_typeX = std::codecvt_utf8<wchar_t>;
    std::wstring_convert<convert_typeX, wchar_t> converterX;
    return converterX.from_bytes(str);
}

// Convert wstring to string
std::string ws2s(const std::wstring& wstr) {
    using convert_typeX = std::codecvt_utf8<wchar_t>;
    std::wstring_convert<convert_typeX, wchar_t> converterX;
    return converterX.to_bytes(wstr);
}
登录后复制

以上是如何在 C 中有效地将'wstring”转换为'string”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板