std::wmemcpy
Материал из cppreference.com
Определено в заголовочном файле <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
[править]Смотрите также
копирует определённое количество символов из одной строки в другую (функция) | |
копирует определённое количество широких символов между двумя, возможно, перекрывающимися массивами (функция) | |
Документация C по wmemcpy |