• ベストアンサー

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

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

  • sean9
  • お礼率80% (32/40)

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

  • ベストアンサー
  • 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

  • 文字列中からファイルパスのみを取得する方法

    テキストファイルからデータを1行ずつ読み取り、 その中にファイルパスがあれば他のファイルに書き出すというロジックを考えています。 文字列は 例えば  include ROOT_PATH."/class/test.txt"; という文字列で、この中から  /class/test.txt という文字列だけを取得したいのです。 現在、拡張子から1文字ずつ前の文字列をチェックしていって、「”」が見つかったらその間の文字列を ファイルパスとしようとしています。 これを1発で行ってくれるような関数等ははないでしょうか?   良いお知恵がありましたらご教授お願いします。

  • Dosバッチでファイルパスからフォルダパス取得

    Dosバッチで引数指定されるファイルパスからフォルダパス部分を抜き出したいと思っています。 例)---------------------------------------------- 「C:¥hoge1¥hoge2¥a.txt」が引数で指定されてきた場合、 「C:¥hoge1¥hoge2¥」の部分を変数に格納したい ----------------------------------------------- ちなみに、指定されてくるパスは不規則です。 どなたか良い方法をご存知でしたらご教授宜しくお願い致します。

  • find結果で文字列検索?

    RedHatLinux7.2です。 シェルコマンドで複数のテキストファイルからある文字列を含むファイルだけリストアップしたいのですが、文字列検索の対象となるテキストファイルが色々なディレクトリにまたがっている場合はどうやってやればよいでしょうか? 多分findで抽出したファイルパスをgrepに渡せばいいんでしょうけどパイプとか?がまだ不勉強ですぐにわかりません。 初歩的なことだと思いますがよろしくお願いします。

  • 文字列取得

    '/path1/path2/file1.txt' '/path1/path2/path3/file2.txt' 上記のようなpathがあった場合にファイル名(拡張子なし)の 文字列を取得したいのですがどのように良いでしょうか? 宜しくお願い致します。 awkで$4と指定すれば「file1.txt」の文字列を取得できるのですが パスの長さが定まっていないため$4ではなく最後の文字と指定する 記号はないでしょうか? echo /path1/path2/file1.txt |awk '{FS="/"; print $4}'

  • ファイルパスを複数書いて、そのファイルパス全てからファイルを順に取り込

    ファイルパスを複数書いて、そのファイルパス全てからファイルを順に取り込みたい。 A1,B1.C1・・・と、セルにファイルの絶対パスを書いて、A1から順に書いてあるファイルパスだけそのパスからファイルを取り込むマクロを作りたいです。 ファイルを指定してファイルを取り込むマクロを作ったのですが、毎回ファイルを指定するのが面倒です。 なので、シートにあらかじめファイルパスを書いておいて、そのファイルパスからファイルを取り込むようにしたいです。 取り込むファイルは複数で、その時によって違います。(といっても、多くても5つくらいですが・・・) どなたか作り方を教えていただけませんでしょうか。 質問内容が分かりづらかったらすみません。 何かあれば補足いたしますのでよろしくお願いします。

  • VBAでB列のファイルパスにリンクを貼りたい

    いつもお世話になっております。 特定のフォルダ内にエクセルファイルが毎月増えていくのですが、このフォルダに入っているエクセルファイルのフルパスの一覧を別のエクセルシートのB列に毎月コピペしています。 月10-20のエクセルファイルがリストに追加されていきます。 この増分のパス(B列)にリンクを貼りたいのです。 B列には既に400件以上のファイルパスが入っているので、毎回上からB列の全部のセルにリンクを貼り直すのではなく、増分(B列の最下行+1行目)以下のセルにリンクを張るBVAを教えて頂きたいのです。 当方教えて頂いたコードとマクロの記録の組み合わせがどうにか出来るレベルなので宜しくお願いします。 但し、B列の140行目迄には空白を含むパス以外の文字が入っています。 パスは141行目以降に空白なく入っていきます。

  • C++で文字列の右端から特定の文字までの文字列を

    C++で文字列の中から,文字列の右端から特定の文字までの文字列を取り出すというものを作りたいと思っています。 右端から○文字取り出す。といった感じのコードは書けるのですが、特定の文字まで、というのがどうもうまくいきません。こちら、良いアドバイスをいただける方がいましたらよろしくお願いします。 例:ファイル名を抽出 文字列\system32\notepad.exeからnotepad.exeの部分だけを取り出したい。というものです。 初めに見つけた\まで取り出す・・とやればよいのでしょうが、その方法が今ひとつ良くわからないので、どうかご助力お願いいたします。

  • 文字列によるファイルの特定とセルの参照

    エクセルで特定のセルの文字を結合して作成した文字列(ファイルパスとファイルを特定する文字列)を使って、指定したファイル(ブック)にあるセルを参照することはできますか。例えば、\\server\document\ファイル1という文字列をエクセルで作成してそのファイルにある特定のセルを参照したいのと考えています。どなたか教えてください。

  • Excelの文字数が決まっていない文字列の抽出

    教えてください。Excelで、文字数の決まっていない文字列を抽出したいのですが、例えば、 セルA1 : プロジェクト1 簡単な文章 2352 PD_JOK セルA2 : プロジェクト13 複雑な文章列とは決まっていない 2453 AO_JKI ・・・・・・ というセルから、 プロジェクト名から、半角数字前までの文字数が決まっていない文字列「簡単な文章」や「複雑な文章~」をセルB列に抽出する方法を教えていただきたいのですが、 そして、半角数字後の半角英字「PD_JOK」をセルC列に抽出する方法も同時に教えてください。 万単位でデータがあるので、関数を使わないと難しいです。 よろしくお願い致します。

  • シェルスクリプト 自身のファイルパスを取得する方法2

    シェルスクリプトで、自身のファイルパスを取得する方法を検索したところ、下記ページへとたどり着きました。 ▼おしえて!HOME'Sくん シェルスクリプト 自身のファイルパスを取得する方法 http://oshiete.homes.jp/qa2419248.html ▼教えて?Coneco shシェルで実行パスではなくファイルのパスを取得する方法 http://oshiete.coneco.net/qa2866868.html しかし、それぞれのページに掲載されていた ${0%/*} や ${1%/*} の意味がどうしてもわかりません。(一応、bashとかで検索してみたりはしました) そこで、下記内容について、教えてください! ・この0というのは、$0のことなのでしょうか。 ・この%は、正規表現か何かなのでしょうか。 ・この/は何を指しているのでしょうか? ・この*は、どの部分の1文字以上を指しているのでしょうか? 以上、よろしくお願いしますッ!

専門家に質問してみよう