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

std::wmemcpy

Материал из cppreference.com
< cpp‎ | string‎ | wide
 
 
 
 
Определено в заголовочном файле <cwchar>
wchar_t* wmemcpy(wchar_t* dest, constwchar_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){constwchar_t from1[]= L"नमस्ते";constwchar_t from2[]= L"Բարև";conststd::size_t sz1 =std::size(from1);conststd::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];elsestd::wcout<< L"\\0";std::wcout<< L'\n';}

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

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

[править]Смотрите также

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