• ベストアンサー

パスからファイル名を抽出

度々お世話になります。 C++でファイルパスからファイル名を求めるには どのようにすればよいでしょうか? 例) "C:\Program Files\Folder1\FileName.txt"という 文字列からFileName.txtだけを抽出したい 初心者で申し訳ないですが、ご教示ください。

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

  • ベストアンサー
  • alphion
  • ベストアンサー率19% (27/136)
回答No.2

WIN32 API の中に GetFullPathName(lpszFile, cchPath, lpszPath, ppszFilePart) というものがあり、ppszFilePartにファイル名のアドレスが戻ってきます。

siddhaartha
質問者

お礼

GetFullPathNameでいけました! ありがとうございます。

その他の回答 (2)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★『WIN32 API』が分かりますか? ・分かるならば『PathFindFileName』、『PathStripPath』がありますよ。 ・『PathFindFileName』は『LPTSTR PathFindFileName(LPCTSTR Path);』 →上記は、Path のファイル名位置をポインタ位置で返す。 ・『PathStripPath』は『void PathStripPath(LPTSTR Path);』です。 →上記は、Path の文字列を書き換えて抽出する。 補足: ・strchr 関数で \ 文字を検索して最後に見つかった \ 文字の次がファイル名  としてポインタで取得できます。→漢字文字の対応も考えると少し面等です。  strchr 関数だけでは正しく検索されません。→漢字の2バイト文字に \ 記号  が入っているためです。 ・とにかく、文字列やポインタをお勉強しましょう。また、SJIS コードの構造  などもお勉強しましょう。→検索してみてな。

  • sepia203
  • ベストアンサー率26% (14/52)
回答No.1

関数は忘れましたが、右から”\”までの数を取得して、 その数分、右から抜き出していました。 ヒントだけで m(_ _;)m ゴメン!!