std::wmemcmp
提供: cppreference.com
ヘッダ <cwchar> で定義 | ||
int wmemcmp(constwchar_t* lhs, constwchar_t* rhs, std::size_t count ); | ||
lhs
および rhs
の指すワイド文字配列の先頭 count
個のワイド文字を比較します。 比較は辞書的に行われます。
結果の符号は比較する配列内の最初の異なるワイド文字の組の値の差の符号です。
count
がゼロの場合、この関数は何もしません。
目次 |
[編集]引数
lhs, rhs | - | 比較するワイド文字配列を指すポインタ |
count | - | 調べるワイド文字数 |
[編集]戻り値
lhs
内の最初の異なるワイド文字の値が rhs
内の対応するワイド文字の値より小さい (辞書順で lhs
が rhs
より前に来る) 場合は負の値。
lhs
と rhs
の count
個のワイド文字がすべて等しい場合は 0。
lhs
内の最初の異なるワイド文字の値が rhs
内の対応するワイド文字の値より大きい (辞書順で rhs
が lhs
より前に来る) 場合は正の値。
[編集]ノート
この関数はロケール対応でなく、コピーする wchar_t オブジェクトの値を気にしません。 ヌルも無効な文字も比較します。
[編集]例
Run this code
#include <iostream>#include <string>#include <cwchar>#include <locale>#include <clocale> void demo(constwchar_t* lhs, constwchar_t* rhs, std::size_t sz){std::wcout<<std::wstring(lhs, sz);int rc = std::wmemcmp(lhs, rhs, sz);if(rc ==0)std::wcout<<" compares equal to ";elseif(rc <0)std::wcout<<" precedes ";elseif(rc >0)std::wcout<<" follows ";std::wcout<<std::wstring(rhs, sz)<<" in lexicographical order\n";} int main(){std::setlocale(LC_ALL, "en_US.utf8");std::wcout.imbue(std::locale("en_US.utf8")); wchar_t a1[]={L'α',L'β',L'γ'};constexprstd::size_t sz = sizeof a1 / sizeof *a1;wchar_t a2[sz]={L'α',L'β',L'δ'}; 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
[編集]関連項目
2つのワイド文字列を比較します (関数) | |
2つのバッファを比較します (関数) | |
2つのワイド文字列の文字を一定量比較します (関数) | |
wmemcmp の C言語リファレンス |