• ベストアンサー

文字列からファイルパスの取得

C++を勉強中です。 メールの文章のような文字列からファイルパスやフォルダパス部分のみを抽出したいと考えています。 パスはファイルサーバやローカルなものです。 どの様にすれば文字列からパス部分を抜き出せますでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.1

パスの終わりの部分がどうなっているかが問題です。 以下のようにパスが他の行と分離されていれば可能でしょうけど、 「パスは C:\dir1\file.exp です。」 以下のように連続していると目で見ればわかるけど、プログラムではどこまでがパスか判断がつかない。 「パスはC:\dir1\file.expです。」 もしかしたら「file.expです」というファイルかもしれない? 分離されていればアルファベット1文字の次がコロンで、その次が\の所から始まって、行の終わりまでということで可能でしょうけど。 またはパスもファイル名も全てアルファベットに決まっているとか、拡張子の文字数が決まっているとか、何らかの規則を設ければ可能だと思います。

sean9
質問者

お礼

参考になりました!いろいろとありがとうございました。

sean9
質問者

補足

hashioogi様、 ご回答ありがとうございます。 仰るとおり、終わりは行が分離するところで判断になりそうですね。 始まりは (1)C:\xxx \の前に:があったら:の前1文字から (2)\\ \\があったら最初の\から の2つくらいでしょうか。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

文字コードによっては「漢字なら2バイト」とは限らんよ>#3.

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.3

ASCIIと漢字が混在している文字列をスキャンする場合に、ASCIIなら1バイト、漢字なら2バイトというように正しくスキップしないと、漢字コードの後半バイトがASCII様に見えて間違ってスキャンすることがあるので注意が必要です。

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

補足の(2)の意味がよく分かりません。 また相対パスのことは考えなくていいのですか ?

関連するQ&A