C 文字列操作 新しいページはコチラ
提供: yonewiki
(→文字列比較) |
(→文字列比較) |
||
722行: | 722行: | ||
setlocaleで指定できない理由があるという特殊なケースになりそうです。それか、cmpという関数が嫌いでcollが良いと思うかとか<br /> | setlocaleで指定できない理由があるという特殊なケースになりそうです。それか、cmpという関数が嫌いでcollが良いと思うかとか<br /> | ||
ですね。ひょっとしたら差分戻り値の件で動作が異なるかもしれません。あとで確認をしておきたいと思います。<br /> | ですね。ひょっとしたら差分戻り値の件で動作が異なるかもしれません。あとで確認をしておきたいと思います。<br /> | ||
− | とてつもなく長いですが、その確認をしてみた結果が以下のものでして、 | + | とてつもなく長いですが、その確認をしてみた結果が以下のものでして、<br /> |
− | [[文字列操作 文字列比較 実行結果1]] | + | <br /> |
+ | [[文字列操作 文字列比較 実行結果1]]<br /> | ||
+ | <br /> | ||
528行目から534行目のように同じ'Y'0x79大文字と'y'0x89小文字の比較でありながらも、<br /> | 528行目から534行目のように同じ'Y'0x79大文字と'y'0x89小文字の比較でありながらも、<br /> | ||
strcollでは1とstrcmpでは-1とでは結果が異なります。asciiコードでは小文字の方が大きな数字の文字コードが<br /> | strcollでは1とstrcmpでは-1とでは結果が異なります。asciiコードでは小文字の方が大きな数字の文字コードが<br /> | ||
割り振られているため、strcmpのように Y と y の差は0x89 - 0x79で負の数値となり -1 となることを期待しますが、<br /> | 割り振られているため、strcmpのように Y と y の差は0x89 - 0x79で負の数値となり -1 となることを期待しますが、<br /> | ||
collは現在のコードページかつ辞書式順序を使うために小文字よりも大文字が後ということで1になります。<br /> | collは現在のコードページかつ辞書式順序を使うために小文字よりも大文字が後ということで1になります。<br /> | ||
− | + | 辞書式順序って何だ?と思いつつあるのが131202時点の状況でして、さらに調査をすすめたものが<br /> | |
+ | <br /> | ||
+ | [[文字列操作 文字列比較 実行結果2]]<br /> | ||
+ | <br /> | ||
大小のみの判定<br /> | 大小のみの判定<br /> |