close
Пространства имён
Варианты
Действия

std::wmemcpy

Материал из cppreference.com
 
 
 
Широкие строки с завершающим нулём
Функции
Операции с символами
Преобразования в числовые форматы
(C++11)(C++11)
(C++11)(C++11)
Операции со строками
Операции с массивами
 
<tbody> </tbody>
Определено в заголовочном файле <cwchar>
wchar_t* wmemcpy( wchar_t* dest, const wchar_t* src, std::size_t count );

Копирует ровно count последовательных широких символов из массива широких символов, на который указывает src, в массив широких символов, на который указывает dest. Если объекты перекрываются, поведение не определено. Если count равно нулю, функция ничего не делает.

Параметры

dest указатель на массив широких символов, в который нужно копировать
src указатель на массив широких символов, из которого нужно копировать
count количество широких символов для копирования

Возвращаемое значение

dest

Примечание

Аналогом этой функции для байтовых строк является std::strncpy, а не std::strcpy.

Эта функция не зависит от локали и не обращает внимания на значения копируемых объектов wchar_t: также копируются нули и недопустимые символы.

Пример

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

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

    // копирует from1 вместе с нулевым терминатором
    std::wmemcpy(to, from1, sz1);
    // добавляет from2 вместе с его нулевым терминатором
    std::wmemcpy(to + sz1, from2, sz2);

    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    std::wcout << L"Широкий массив содержит: ";
    for (std::size_t n = 0; n < std::size(to); ++n)
        if (to[n])
            std::wcout << to[n];
        else
            std::wcout << L"\\0";
    std::wcout << L'\n';
}

Возможный вывод:

Широкий массив содержит: नमस्ते\0Բարև\0

Смотрите также

копирует определённое количество символов из одной строки в другую
(функция) [править]
копирует определённое количество широких символов между двумя, возможно, перекрывающимися массивами
(функция) [править]