C 文字列操作 新しいページはコチラ
提供: yonewiki
(→文字列連結) |
(→文字列比較) |
||
480行: | 480行: | ||
=='''文字列比較'''== | =='''文字列比較'''== | ||
+ | 数値の比較は配列でないかぎりは単純な1変数同志の比較ですが、文字列は配列全体が一致しているかを確認することになります。<br /> | ||
+ | かといって、自分で配列全体を相互に比較するようなプログラムを組むという必要はなく、標準で準備されている関数を使う事で比較できます。<br /> | ||
+ | VB、PHP、Perlのような関数では関数を使わずに、数値と数値を1変数で比較するかのように比較ができる仕組みになっていますが、<br /> | ||
+ | C言語では関数を使って比較する必要があります。面倒だ(´Д`;)。<br /> | ||
+ | <br /> | ||
+ | この厳密さも、C言語を難しく感じる一つの要素だと思います。<br /> | ||
+ | 配列をひとつづつ確認する作業なんだという意識づけを忘れないという意味では大事なようにも感じます。<br /> | ||
+ | だから、ちょっとした変更の伴う比較でも、どうすればよいかを考えることができるのだと思います。<br /> | ||
+ | VBやPHP、Perlのような便利な比較ばかりをやっているとふと、大文字小文字区別なし変換をしたいとか、<br /> | ||
+ | 半角全角区別なし変換をしたいときに、思考が止まってしまう。<br /> | ||
+ | そういうときにはPHPやPerl、VBでも一生懸命調べて、C言語の考え方にたどり着いて、比較することになるんでしょうけど…<br /> | ||
+ | さいしょから、文字列比較とは、こういうものだと知っておけば、それでいいのですから、ネガティブに考えず、<br /> | ||
+ | これを覚えれば、潰しが効くとポジティブにとらえてやっていきましょう。<br /> | ||
+ | <br /> | ||
+ | 例によって比較の関数もマルチバイト文字、ワイド文字、マルチバイト2バイト文字対応といろいろな関数があります。<br /> | ||
+ | strncmp、wcsncmp、_mbsncmp、_mbsncmp_l<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/eywx8zcx.aspx<br /> | ||
+ | _strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/chd90w8e.aspx<br /> | ||
+ | _stricmp、_wcsicmp、_mbsicmp、_stricmp_l、_wcsicmp_l、_mbsicmp_l<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/k59z8dwe.aspx<br /> | ||
+ | strcmp、wcscmp、_mbscmp<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/e0z9k731.aspx<br /> | ||
+ | _mbsnbicmp、_mbsnbicmp_l <br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/dyhkb6c5.aspx<br /> | ||
+ | _mbsnbcmp、_mbsnbcmp_l <br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/hce588f2.aspx<br /> | ||
+ | strcoll、wcscoll、_mbscoll、_strcoll_l、_wcscoll_l、_mbscoll_l , _stricoll、_wcsicoll、_mbsicoll、_stricoll_l、_wcsicoll_l、_mbsicoll_l, _strncoll、_wcsncoll、_mbsncoll、_strncoll_l、_wcsncoll_l、_mbsncoll_l, _strnicoll、_wcsnicoll、_mbsnicoll、_strnicoll_l、_wcsnicoll_l、_mbsnicoll_l<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/a7cwbx4t.aspx<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/2w46a1da.aspx<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/72c43s4t.aspx<br /> | ||
+ | http://msdn.microsoft.com/ja-jp/library/vstudio/a697c234.aspx<br /> | ||
+ | <br /> | ||
+ | 多い!更に多い。<br /> | ||
+ | けどicmpってついてるやつは、大文字小文字を区別しないと考えればいいし、cmpで終わらない、collはコードページという特殊な考え方が使われること、<br /> | ||
+ | ncpmは比較する文字数指定あり、_lはロケール個別指定、と考えればかなりすっきり。collによる比較はあとで考えましょう。<br /> | ||
+ | <br /> | ||
+ | |||
=='''文字列一致'''== | =='''文字列一致'''== | ||
=='''文字列区切り文字分割'''== | =='''文字列区切り文字分割'''== |