- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AnsiPos相当の関数はありませんか?)
C++のAnsiPos相当の関数はあるのか
このQ&Aのポイント
- BorlandC++では、AnsiPosという関数が使えますが、VisualC++やFreePascalでは使えません。
- C++でstringのfindメソッドを使用する場合、期待した結果が得られません。
- AnsiPosによる処理は、漢字コードの中の\を拾わず、指定した文字列が最初に見つかった位置を返します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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; }
お礼
深夜にもかかわらず、回答ありがとうございます。 _mbsstr ですか。文字列検索 strstr関数のマルチバイト版があったんですね。 それにしても、アドレス値の差分で文字位置を返すというのは、いかにもC言語らしいですね。 ところで私の例文が間違っていました。 n := AnsiPos('表題\一覧'); ではなく n := AnsiPos('\', '表題\一覧'); でした。 さっそく、引数の順序を逆にして使わせていただきます。