在线文档教程
C++
字符串 | Strings

std::wcstombs

STD::胃

Defined in header
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)...

二次

#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'; }

二次

产出:

二次

multibyte string: zß水?

二次

另见

wcsrtombsconverts a wide string to narrow multibyte character string, given state (function)
mbstowcsconverts a narrow multibyte character string to wide string (function)
do_out virtualconverts a string from internT to externT, such as when writing to file (virtual protected member function of std::codecvt)

c用于wcstubs的文档

© cppreference.com

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

http://en.cppreference.com/w/cpp/string/multibit/wcstubs