名前空間
変種
操作

std::wmemcpy

提供: cppreference.com
< cpp‎ | string‎ | wide
ヘッダ <cwchar> で定義
wchar_t* wmemcpy( wchar_t* dest, const wchar_t* src, std::size_t count );

ちょうど count 個の連続するワイド文字を src の指すワイド文字配列から dest の指すワイド文字配列にコピーします。 オブジェクトがオーバーラップしている場合、動作は未定義です。 count がゼロの場合、この関数は何もしません。

目次

[編集] 引数

dest - コピー先のワイド文字配列を指すポインタ
src - コピー元のワイド文字配列を指すポインタ
count - コピーするワイド文字数

[編集] 戻り値

dest

[編集] ノート

この関数はロケール対応でなく、コピーする wchar_t オブジェクトの値を気にしません。 ヌルも無効な文字もコピーします。

[編集]

#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';
}

出力例:

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

[編集] 関連項目

文字列から別の文字列へ文字を一定量コピーします
(関数) [edit]
2つのオーバーラップしている可能性のある配列間でワイド文字を一定量コピーします
(関数) [edit]