目次 - SDL 3.0 API(機能別) - 標準ライブラリ - SDL_wcsncasecmp

SDL_wcsncasecmp

2つのNUL終端のワイド文字列を大文字小文字を無視して最大n w_char個を比較する

ヘッダ

SDL3/SDL_stdinc.h

構文

int SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen);

引数

const wchar_t *str1比較する1つ目の文字列. NULL不可
const wchar_t *str2比較する2つ目の文字列. NULL不可
size_tmaxlen比較する最大w_char数

戻り値

(int) str1str2「未満」のとき負の数, str1str2を「超える」とき正の数, 文字列が一致するとき0を戻す.

詳細

この関数は, システムロケールに関わらず多くの自然言語を大文字小文字を無視して扱うために"case-folding"として知られる技術を用いている. これは多くの文字を扱える: 例えば, ドイツ語のエスツェット(ß)と2つのASCII文字's'(ss)を一致させるなどである. 注意すべき例外もある: これはトルコ語の'i'は扱えない. 自然言語は複雑である!

環境により"wchar_t"は2バイト(Windowsなど)のUTF-16や, 4バイトのUTF-32がありうる. この関数のUnicodeの処理は, NUL終端の任意のバイト列の文字列ではなく, 正しいUTF-8文字列を想定している. UTF-16(またはUTF-32)として有効でない文字はUnicode文字のU+FFFD(置換文字)として扱われるため, 2つの文字列の異なるバイトが同じ長さの置換文字に変換され一致する可能性がある.

この関数は可変幅の文字を扱うことがあるが, maxlenはw_charの数の制限なので注意すること. この制限がUTF-16のマルチバイトの途中だった場合, 最後の文字はオーバーフローを防ぐために1つ以上のU+FFFD(置換文字)に変換される.

maxlenは比較する最大wchar_t数である. 文字列がこのwchar_t数(またはこのwchar_t数以内に両方の文字列にNUL終端がある)で一致する場合, 文字列は一致するとみなされる.

スレッドセーフ

この関数はどのスレッドからも安全に呼べる.

バージョン

SDL 3.2.0以降

SDL Wikiへのリンク

SDL_wcsncasecmp - SDL Wiki