首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::wcstombs

Defined in header <cstdlib>

std::size_t wcstombs( char* dst, const wchar_t* src, std::size_t len);

从第一个元素指向的数组中转换宽字符序列。src以初始移位状态开始的窄多字节表示。转换后的字符存储在char数组的连续元素中。dst.不超过len字节被写入目标数组。

每个字符被转换为调用std::wctomb,除非wcgrave%27s转换状态不受影响。在下列情况下,转换将停止:

  • 空字符被转换并存储。
  • wchar_t被发现与当前C语言环境中的有效字符不对应。
  • 要存储的下一个多字节字符将超过len...

注记

在大多数实现中,该函数更新类型为std::mbstate_t当它通过字符串进行处理时,不能由两个线程同时调用,std::wcsrtombs在这种情况下应该使用。

POSIX指定一个公共扩展:ifdst为空指针,此函数将返回要写入的字节数。dst,如果被转换。相似的行为是标准的std::wcsrtombs...

参数

dst

-

pointer to narrow character array where the multibyte character will be stored

src

-

pointer to the first element of a null-terminated wide string to convert

len

-

number of byte available in the array pointed to by dst

返回值

成功后,返回字节数%28,包括任何移位序列,但不包括终止'\0'将%29写入第一个元素指向的字符数组dst...

在转换错误%28时,如果遇到无效的宽字符%29,则返回static_cast<std::size_t>(-1)...

二次

代码语言:javascript
复制
#include <iostream>
#include <clocale>
#include <cstdlib>
 
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    // UTF-8 narrow multibyte encoding
    const wchar_t* wstr = L"z\u00df\u6c34\U0001d10b"; // or L"zß水?"
    char mbstr[11];
    std::wcstombs(mbstr, wstr, 11);
    std::cout << "multibyte string: " << mbstr << '\n';
}

二次

产出:

二次

代码语言:javascript
复制
multibyte string: zß水?

二次

另见

wcsrtombs

converts a wide string to narrow multibyte character string, given state (function)

mbstowcs

converts a narrow multibyte character string to wide string (function)

do_out virtual

converts a string from internT to externT, such as when writing to file (virtual protected member function of std::codecvt)

c用于wcstubs的文档

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券