std::wcrtomb
cppreference.com
<tbody>
</tbody>
std::size_t wcrtomb( char* s, wchar_t wc, std::mbstate_t* ps ); |
||
.
s , , wc ( *ps) , s, *ps . MB_CUR_MAX .
s , std::wcrtomb(buf, L'\0', ps) buf .
wc L'\0', , , , *ps .
| s | , | |
| wc | ||
| ps | , |
( ), , s.
( wc ), static_cast<std::size_t>(-1), EILSEQ errno *ps .
#include <clocale>
#include <cwchar>
#include <iostream>
#include <string>
void print_wide(const std::wstring& wstr)
{
std::mbstate_t state{};
for (wchar_t wc : wstr)
{
std::string mb(MB_CUR_MAX, '\0');
std::size_t ret = std::wcrtomb(&mb[0], wc, &state);
std::cout << " " << mb << " " << ret << " \n";
}
}
int main()
{
std::setlocale(LC_ALL, "en_US.utf8");
std::wstring wstr = L"z\u00df\u6c34\U0001f34c"; // L"z"
print_wide(wstr);
}
:
z 1
2
3
4
| () | |
| () | |
[virtual] |
internT externT, , (virtual protected std::codecvt -)
|
C wcrtomb
| |