##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::wmemcpy

From cppreference.com
< cpp‎ | string‎ | wide

Defined in header `<cwchar>` |  |
wchar_t* wmemcpy( wchar_t* dest, const wchar_t* src, std::size_t count ); |  |

Copies exactly `count` successive wide characters from the wide character array pointed to by `src` to the wide character array pointed to by `dest`. If the objects overlap, the behavior is undefined. If `count` is zero, the function does nothing.

### [edit] Parameters

dest | - | pointer to the wide character array to copy to
src | - | pointer to the wide character array to copy from
count | - | number of wide characters to copy

### [edit] Return value

`dest`

### [edit] Notes

This function's analog for byte strings is std::strncpy, not std::strcpy.

This function is not locale-sensitive and pays no attention to the values of the wchar_t objects it copies: nulls as well as invalid characters are copied too.

### [edit] Example

Run this code

    #include <iostream>
    #include <cwchar>
    #include <clocale>
    #include <locale>

    int main(void)
    {
        wchar_t from1[] = L"नमस्ते";
        const size_t sz1 = sizeof from1 / sizeof *from1;
        wchar_t from2[] = L"Բարև";
        const size_t sz2 = sizeof from2 / sizeof *from2;
        wchar_t to[sz1 + sz2];

        std::wmemcpy(to, from1, sz1); // copy from1, along with its null terminator
        std::wmemcpy(to + sz1, from2, sz2); // append from2, along with its null terminator

        std::setlocale(LC_ALL, "en_US.utf8");
        std::cout.imbue(std::locale("en_US.utf8"));
        std::wcout << "Wide array contains: ";
        for(size_t n = 0; n < sizeof to / sizeof *to; ++n)
            if(to[n])
                std::wcout << to[n];
            else
                std::wcout << "\\0";
        std::wcout << '\n';
    }

Possible output:

    Wide array contains: नमस्ते\0Բարև\0

### [edit] See also

strncpy | copies a certain amount of characters from one string to another (function) [edit]
wmemmove | copies a certain amount of wide characters between two, possibly overlapping, arrays (function) [edit]
C documentation for wmemcpy

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/string/wide/wmemcpy&oldid=76664"