ある文字列の中に、特定の文字(文字列)を含むか調べたいケースはしばしばある。
AnsiString?のPosメソッドを使うと実現できるのだが、例えば「コミュニケーション」という文字列の中に「V」という文字があるかPosメソッドで調べると下記の結果になる。
AnsiString strDAT = "コミュニケーション"; int iPOS; iPOS = strDAT.Pos("V"); ShowMessage(AnsiString(iPOS)); これを実行すると、「14」という結果が得られることになる。
これは、「V」という文字のASCIIコードが0x56であるのに対して、「シ」という文字のShiftJISコードが0x8356であることから、「シ」の2バイト目を「V」と誤認識しているのである。
こんな時は「AnsiPos?」を使えばよい。
AnsiString strDAT = "コミュニケーション"; int iPOS; iPOS = strDAT.AnsiPos("V"); ShowMessage(AnsiString(iPOS));
これであれば結果は「0」が返ってくるようになる。