- ベストアンサー
パスからファイル名を抽出
度々お世話になります。 C++でファイルパスからファイル名を求めるには どのようにすればよいでしょうか? 例) "C:\Program Files\Folder1\FileName.txt"という 文字列からFileName.txtだけを抽出したい 初心者で申し訳ないですが、ご教示ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
WIN32 API の中に GetFullPathName(lpszFile, cchPath, lpszPath, ppszFilePart) というものがあり、ppszFilePartにファイル名のアドレスが戻ってきます。
その他の回答 (2)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★『WIN32 API』が分かりますか? ・分かるならば『PathFindFileName』、『PathStripPath』がありますよ。 ・『PathFindFileName』は『LPTSTR PathFindFileName(LPCTSTR Path);』 →上記は、Path のファイル名位置をポインタ位置で返す。 ・『PathStripPath』は『void PathStripPath(LPTSTR Path);』です。 →上記は、Path の文字列を書き換えて抽出する。 補足: ・strchr 関数で \ 文字を検索して最後に見つかった \ 文字の次がファイル名 としてポインタで取得できます。→漢字文字の対応も考えると少し面等です。 strchr 関数だけでは正しく検索されません。→漢字の2バイト文字に \ 記号 が入っているためです。 ・とにかく、文字列やポインタをお勉強しましょう。また、SJIS コードの構造 などもお勉強しましょう。→検索してみてな。
- sepia203
- ベストアンサー率26% (14/52)
関数は忘れましたが、右から”\”までの数を取得して、 その数分、右から抜き出していました。 ヒントだけで m(_ _;)m ゴメン!!
お礼
GetFullPathNameでいけました! ありがとうございます。