std::wmemmove

来自cppreference.com
< cpp‎ | string‎ | wide
在标头 <cwchar> 定义
wchar_t* wmemmove( wchar_t* dest, const wchar_t* src, std::size_t count );

准确地从 src 所指向的宽字符数组复制 count 个相继的宽字符到 dest 所指向的宽字符数组。

count 为零,则函数不做任何事。

数组可以重叠:如同复制宽字符到临时宽字符数组,再从临时数组到 dest 一般发生复制。

参数

dest - 指向复制目标宽字符数组的指针
src - 指向复制来源宽字符数组的指针
count - 要复制的宽字符数

返回值

返回 dest 的副本。

注意

此函数不考虑本地环境,并且不注意其所复制的 wchar_t 对象的值:亦会复制空字符和非法字符。

示例

#include <iostream>
#include <cwchar>
#include <locale>
#include <clocale>
 
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
 
    wchar_t str[] = L"αβγδεζηθικλμνξοπρστυφχψω";
    std::wcout << str << '\n';
    std::wmemmove(str+4, str+3, 3); // 从 [δεζ] 复制到 [εζη]
    std::wcout << str << '\n';
}

可能的输出:

αβγδεζηθικλμνξοπρστυφχψω
αβγδδεζθικλμνξοπρστυφχψω

参阅

在两个不重叠数组间复制一定量宽字符
(函数)
移动一个缓冲区到另一个
(函数)
将某一范围的元素复制到一个新的位置
(函数模板)
按从后往前的顺序复制一个范围内的元素
(函数模板)