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ß水?
二次
另见
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的文档
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。