Difference between revisions of "cpp/string/multibyte/mbstowcs"
From cppreference.com
m (Text replace - "{{cpp|" to "{{c|") |
D41D8CD98F (Talk | contribs) m |
||
(11 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
{{cpp/title|mbstowcs}} | {{cpp/title|mbstowcs}} | ||
− | {{cpp/string/multibyte/ | + | {{cpp/string/multibyte/}} |
− | {{ddcl | header=cstdlib | | + | {{ddcl|header=cstdlib| |
− | std::size_t mbstowcs( wchar_t* dst, const char* src, std::size_t len) | + | std::size_t mbstowcs( wchar_t* dst, const char* src, std::size_t len ) |
}} | }} | ||
− | Converts a multibyte character string from the array whose first element is pointed to by {{ | + | Converts a multibyte character string from the array whose first element is pointed to by {{|src}} to its wide character representation. Converted characters are stored in the successive elements of the array pointed to by {{|dst}}. No more than {{|len}} wide characters are written to the destination array. |
− | + | ||
− | + | ||
+ | |||
* The multibyte null character was converted and stored. | * The multibyte null character was converted and stored. | ||
* An invalid (in the current C locale) multibyte character was encountered. | * An invalid (in the current C locale) multibyte character was encountered. | ||
− | * The next wide character to be stored would exceed {{ | + | * The next wide character to be stored would exceed {{|len}}. |
===Notes=== | ===Notes=== | ||
− | In most implementations, this function updates a global static object of type {{ | + | In most implementations, this function updates a global static object of type {{|std::mbstate_t}} as it processes through the string, and cannot be called simultaneously by two threads, {{|std::mbsrtowcsshould be used in such cases. |
− | POSIX specifies a common extension: if {{ | + | POSIX specifies a common extension: if {{|dst}} is a null pointer, this function returns the number of wide characters that would be written to {{|dst}}, if converted. Similar behavior is standard for {{|std::mbsrtowcs}}. |
===Parameters=== | ===Parameters=== | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{|dst|pointer to wide character array where the wide string will be stored}} |
− | {{ | + | {{|src|pointer to the first element of a null-terminated multibyte string to convert}} |
− | {{ | + | {{|len|number of wide characters available in the array pointed to by dst}} |
− | {{ | + | {{end}} |
===Return value=== | ===Return value=== | ||
On success, returns the number of wide characters, excluding the terminating {{c|L'\0'}}, written to the destination array. | On success, returns the number of wide characters, excluding the terminating {{c|L'\0'}}, written to the destination array. | ||
− | On conversion error (if invalid multibyte character was encountered), returns {{c|static_cast<std::size_t>(-1)}}. | + | On conversion error (if invalid multibyte character was encountered), returns {{c|static_cast<std::size_t> (-1)}}. |
===Example=== | ===Example=== | ||
{{example | {{example | ||
− | + | |code= | |
− | + | ||
− | + | ||
#include <clocale> | #include <clocale> | ||
#include <cstdlib> | #include <cstdlib> | ||
+ | |||
+ | |||
int main() | int main() | ||
{ | { | ||
std::setlocale(LC_ALL, "en_US.utf8"); | std::setlocale(LC_ALL, "en_US.utf8"); | ||
− | const char* mbstr = | + | |
− | // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\ | + | const char* mbstr = "z\u00df\u6c34\"; // or u8" |