• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AnsiPos相当の関数はありませんか?)

C++のAnsiPos相当の関数はあるのか

このQ&Aのポイント
  • BorlandC++では、AnsiPosという関数が使えますが、VisualC++やFreePascalでは使えません。
  • C++でstringのfindメソッドを使用する場合、期待した結果が得られません。
  • AnsiPosによる処理は、漢字コードの中の\を拾わず、指定した文字列が最初に見つかった位置を返します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.1

AnsiPosの仕様を知りませんが、VC++専用で良ければ、_mbsstrが使えそうです。 #include <mbstring.h> int AnsiPos(const char *s1, const char *s2) { const unsigned char *p = _mbsstr((const unsigned char *)s1, (const unsigned char *)s2); if (p) { return p - (const unsigned char *)s1 + 1; } return 0; }

o_jiji
質問者

お礼

深夜にもかかわらず、回答ありがとうございます。 _mbsstr ですか。文字列検索 strstr関数のマルチバイト版があったんですね。 それにしても、アドレス値の差分で文字位置を返すというのは、いかにもC言語らしいですね。 ところで私の例文が間違っていました。 n := AnsiPos('表題\一覧'); ではなく n := AnsiPos('\', '表題\一覧'); でした。 さっそく、引数の順序を逆にして使わせていただきます。

関連するQ&A