首頁 >後端開發 >C++ >如何在 C 中有效地將'wstring”轉換為'string”?

如何在 C 中有效地將'wstring”轉換為'string”?

DDD
DDD原創
2024-12-14 15:08:11699瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn