・「イ.txt」と「ツ.txt」というファイル名を区別できない
・同様の現況が各所である
等がありました。
実験結果をまとめて報告しておきます。
○:同じと判定=区別しない
×:違うと判定=区別する
VC:Microsoft Visual C++ 6.0 Pro SP5
BC:Borland C++ 5.5.1
(C):setlocal( CL_ALL, "C")のとき
(J):setlocal( CL_ALL, "Japanese")のとき
OSはWindows XP Home 日本語版(OEM)
■結果
比較文字列, A/a, 日/英, ア/ヂ, A/a
stricmp (C)VC, ○,×,○,×
stricmp (C)BC, ○,×,○,×
stricmp (J)VC, ○,×,○,×
stricmp (J)BC, ○,○,○,○
_mbsicmp (C)VC, ○,×,×,○
_mbsicmp (C)BC, ○,×,×,×
_mbsicmp (J)VC, ○,×,×,○
_mbsicmp (J)BC, ○,×,×,×
期待する動作は,
ファイル名規則 , ○,×,×,×
全角大小同一視 , ○,×,×,○
コンパイラに異存する
_stricmpと_mbsicmpは動作が違う
特に_stricmpはSJISに未対応
ファイル名判定にはつかえない
■結論
stricmp/_mbsicmp/memicmpを使うときは,基本的に
my_icmp.cpp/h を利用しましょう。