フルパスを用い全角半角を含むファイル名を取得する方法を教えてください(VC++6,Windows2000)

フルパスからファイル名を取得する際にstrrchrを用い後ろから\\を検索し、その位置から
ファイル名を取得する処理を作成しましたが、全角のファイル名(例:産能大学.txt)のときに正しくファイル名を取得できないケースがあります。二バイト表現の文字の中に\\があるということでしょうか?
良いファイル名取得方法がありましたら教えてください。

『参考ソース』
if(NULL==(cMark=strrchr(cTempPath,'\\'))){

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/01/08 10:58:13
  • 終了:2007/01/13 09:12:22

ベストアンサー

id:Bookmarker No.2

しおり回答回数191ベストアンサー獲得回数342007/01/08 14:41:19

ポイント36pt

基本的に、Shift JIS 等マルチバイト系の文字コードで、後ろから検索してはいけません。

(大丈夫な文字コードもありますが)

本件の場合は、_splitpath を使うのが簡単だと思います。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...

ちなみに、例で示されている"産能大学.txt"の場合は、"能"の2バイト目が'\\'ですね。

id:harunoharuno

回答ありがとうございます。

今回の問題はBookmarkerさんから

教えていただいた方法で対処しました。

>Shift JIS 等マルチバイト系の文字コードで、後ろから検索してはいけません。

そうですね。同じ失敗をしないように心がけます。

2007/01/10 11:01:58

その他の回答(2件)

id:ToMmY No.1

ToMmY回答回数656ベストアンサー獲得回数192007/01/08 12:56:17

ポイント25pt

全角を有効にして取得してますか?

\\表現はないですけどオプションと取得方法と変数をw_char使わないとまずいと思いますよ

http://www.dinop.com/vc/unicode.html

id:harunoharuno

回答ありがとうございます。

マルチバイト文字として扱うにはw_char

で宣言をするのですね。

すでにたくさんcharで宣言しているため、

w_charに修正するのはちょっと難しいそうです。

2007/01/10 10:39:51
id:Bookmarker No.2

しおり回答回数191ベストアンサー獲得回数342007/01/08 14:41:19ここでベストアンサー

ポイント36pt

基本的に、Shift JIS 等マルチバイト系の文字コードで、後ろから検索してはいけません。

(大丈夫な文字コードもありますが)

本件の場合は、_splitpath を使うのが簡単だと思います。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...

ちなみに、例で示されている"産能大学.txt"の場合は、"能"の2バイト目が'\\'ですね。

id:harunoharuno

回答ありがとうございます。

今回の問題はBookmarkerさんから

教えていただいた方法で対処しました。

>Shift JIS 等マルチバイト系の文字コードで、後ろから検索してはいけません。

そうですね。同じ失敗をしないように心がけます。

2007/01/10 11:01:58
id:kurukuru-neko No.3

kurukuru-neko回答回数1844ベストアンサー獲得回数1552007/01/08 14:44:42

ポイント36pt

MS漢字コード(通称シフトJIS)の_MBCS環境で

コンパイルしていると思います。

漢字コードの2バイト目が5Cの場合正常処理できません。

_splitpath関数を使う方法、アプリをUNICODE対応にする

TCHARを使う方法などがあります。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...

strrchrを使いたい場合は、_MBCSを定義するか

_mbstrrchrを使う

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...

MBCS/UNICODEについて

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja...

id:harunoharuno

回答ありがとうございます。

_mbstrrchrを用いて・・・検索できるのですか?

半角・全角入り混じった中から、『全角の※※

を探す』などができたら理想ですね。

試してみたいと思います。

2007/01/10 11:05:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません