[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/string/multibyte/wcsrtombs [Back]  [Original]

std::wcsrtombs cppreference.com
cppreference.com

std::wcsrtombs

cppreference.com
<tbody> </tbody>
std::size_t wcsrtombs( char* dst, const wchar_t** src, std::size_t len, std::mbstate_t* ps );

, *src, , , *ps. dst , , dst. len .

, std::wcrtomb. , :

  • . src , *ps .
  • wchar_t, C. src .
  • , , len. src . , dst .

dst ,
src ,
len , , dst
ps

( , '\0'), , dst. dst , , ( , '\0').

( ) static_cast<std::size_t>(-1), EILSEQ errno *ps .

#include <clocale>
#include <cwchar>
#include <iostream>
#include <string>
#include <vector>

void print_wide(const wchar_t* wstr)
{
    std::mbstate_t state = std::mbstate_t();
    std::size_t len = 1 + std::wcsrtombs(nullptr, &wstr, 0, &state);
    std::vector<char> mbstr(len);
    std::wcsrtombs(&mbstr[0], &wstr, mbstr.size(), &state);
    std::cout << " : " << &mbstr[0] << '\n'
              << ",  '\\0': " << mbstr.size() << '\n';
}

int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    //    UTF-8
    const wchar_t* wstr = L"z\u00df\u6c34\U0001d10b"; //  L"z"
    print_wide(wstr);
}

:

 : z
,  '\0': 11


() []

() []
[virtual]
internT externT, ,
:
converts a string from internT to externT, such as when writing to file
Google.
. .

(virtual protected std::codecvt -) []
C wcsrtombs

Web Proxy Viewer  |  New URL  |  Original Page