名前空間
変種
操作

wmemcmp

From cppreference.com
< c‎ | string‎ | wide
 
 
 
 
ヘッダー <wchar.h> で定義
int wmemcmp( const wchar_t* lhs, const wchar_t* rhs, size_t count );
(C95 以降)

lhsrhs が指すワイド文字列(または互換性のある整数型)配列の最初の count 文字を比較します。比較は辞書順で行われます。

結果の符号は、比較対象の配列で最初に異なるワイド文字のペアの値の差の符号となります。

count がゼロの場合、関数は何も行いません。

目次

[編集] パラメータ

lhs, rhs - 比較するワイド文字配列へのポインタ
count - 検索するワイド文字数

[編集] 戻り値

lhs の最初の異なるワイド文字の値が、比較対象の rhs の対応するワイド文字の値よりも小さい場合、負の値: 辞書順で lhsrhs より前に来ます。

0: lhsrhs のすべての count 文字が等しい場合。

lhs の最初の異なるワイド文字の値が、比較対象の rhs の対応するワイド文字の値よりも大きい場合、正の値: 辞書順で rhslhs より前に来ます。

[編集] 注意

この関数はロケールに依存せず、検査する wchar_t オブジェクトの値に注意しません。ヌル文字や無効なワイド文字も比較されます。

[編集]

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
 
void demo(const wchar_t* lhs, const wchar_t* rhs, size_t sz)
{
    for (size_t n = 0; n < sz; ++n)
        putwchar(lhs[n]);
 
    int rc = wmemcmp(lhs, rhs, sz);
    if (rc == 0)
        wprintf(L" compares equal to ");
    else if(rc < 0)
        wprintf(L" precedes ");
    else if(rc > 0)
        wprintf(L" follows ");
 
    for (size_t n = 0; n < sz; ++n)
        putwchar(rhs[n]);
    wprintf(L" in lexicographical order\n");
}
 
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
 
    wchar_t a1[] = {L'α',L'β',L'γ'};
    wchar_t a2[] = {L'α',L'β',L'δ'};
 
    size_t sz = sizeof a1 / sizeof *a1;
    demo(a1, a2, sz);
    demo(a2, a1, sz);
    demo(a1, a1, sz);
}

出力

αβγ precedes αβδ in lexicographical order
αβδ follows αβγ in lexicographical order
αβγ compares equal to αβγ in lexicographical order

[編集] 参考文献

  • C23標準 (ISO/IEC 9899:2024)
  • 7.29.4.4.5 The wmemcmp function (p: TBD)
  • C17標準 (ISO/IEC 9899:2018)
  • 7.29.4.4.5 The wmemcmp function (p: TBD)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.29.4.4.5 The wmemcmp function (p: 435)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.24.4.4.5 The wmemcmp function (p: 381)

[編集] 関連項目

(C95)
2つのワイド文字列を比較する
(関数) [編集]
2つのバッファを比較する
(関数) [編集]
2つのワイド文字列から指定された文字数を比較する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)