プロが教える店舗&オフィスのセキュリティ対策術

C++を勉強中です。
メールの文章のような文字列からファイルパスやフォルダパス部分のみを抽出したいと考えています。
パスはファイルサーバやローカルなものです。

どの様にすれば文字列からパス部分を抜き出せますでしょうか。
よろしくお願いします。

A 回答 (4件)

パスの終わりの部分がどうなっているかが問題です。


以下のようにパスが他の行と分離されていれば可能でしょうけど、
「パスは
C:\dir1\file.exp
です。」

以下のように連続していると目で見ればわかるけど、プログラムではどこまでがパスか判断がつかない。
「パスはC:\dir1\file.expです。」
もしかしたら「file.expです」というファイルかもしれない?

分離されていればアルファベット1文字の次がコロンで、その次が\の所から始まって、行の終わりまでということで可能でしょうけど。

またはパスもファイル名も全てアルファベットに決まっているとか、拡張子の文字数が決まっているとか、何らかの規則を設ければ可能だと思います。

この回答への補足

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

補足日時:2014/03/18 10:37
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/03/22 16:17

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

    • good
    • 0

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

    • good
    • 0

補足の(2)の意味がよく分かりません。



また相対パスのことは考えなくていいのですか ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!