• ベストアンサー

C++での文字列の挿入。置き換え方法

C++で 別ファイルから読み込んだ文字列をファイルパスとして使用したいのですが、この時\を\\に置き換えないと認識してもらえないですよね。 例:読み込んだ文字列 C:\Documents and Settings\user\My Documents\a.text これをC:\\Documents and Settings\\user\\My Documents\\a.text というように変換したいのです。 読み込んだ文字列中に\を見つけたら\\に置き換える。もしくは\をもうひとつ挿入・・・といったコードを書けばよいと思うのですが、こちらの方法が良く思いつきません。うまくできるようなアドバイスをいただける方がいましたらどうかよろしくお願いします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8512/19352)
回答No.1

そんな事をする必要はありません。 \\を使うのは、ソースコードで「”」で括った文字列の中に「\」を書きたい時にだけ必要です。 ファイルの中に入っている「\が1つになっているパス文字列」は、そのまま、パス文字列として、ファイル操作関数で使えます。余計な加工は一切要りません。 別ファイルに C:\Documents and Settings\user\My Documents\a.text と入っているなら、それを文字列変数に読み込んで、そのまま、何もしないで、ファイルオープン関数にファイル名として指定できます。

関連するQ&A

  • 文字列の置換について…

    こんにちは。 VB2005の勉強をさせて頂いています。 テキストボックスがあり、その内容が以下のとおりだったとします。 テキスト内容:C:\Documents and Settings\User\My Documents\Visual Studio 2005\Projects\テスト この時、ボタンを押すと テキスト内容:C:\…\Projects\テスト というふうに、ある部分を省略した形にしたいと思っています。 ボタンを押した時のプログラムですが、「\」マークの1つ目の次の文字から5つ目の手前までの文字列を 「…」で置換するといった具合にしたいのですが、なかなか出来なくて困っています。 何かわかり易い、サンプルソース等ありませんでしょうか? また、何か他の方法等ございましたら、そちらもアドバイス頂けると助かります。 よろしくお願いいたします。

  • 秀丸マクロで、一部文字列を変換後クリップボードコピーしたい

    秀丸マクロで、一部文字列を変換後クリップボードコピーしたい 秀丸マクロで、setclipboard filename;とすると、 現在開いているファイルのフルパスを取得してクリップボードにコピーすることができますが、 この際に\を/に変換して、クリップボードコピーしたいと思いますがうまくいきません。 どうすればよいのでしょうか。。 例) filenameで取得した c:\documents and settings\user\my documents\sample.txt というパスを c:/documents and settings/user/my documents/sample.txt のようにしてから、クリップボードコピーしたい。 意味不明でしたら加筆修正しますのでよろしくお願いします。

  • DOSコマンドで相対パスの取得の方法がわかりません。

    ファイルパスが C:\Documents and Settings\ユーザー名\My Documents\My Music を My Music だけを取り出す方法が見つかりません。 どのように操作したら相対パスを取得することができるのでしょうか?

  • ドライブレターとは?パスの文字数とは?

    C:\Documents and Settings\user\My Documents\Excel\file.xls というファイル名があった場合、 ドライブレターというのは「C:」のことでしょうか? また、このパスの文字列を数える場合、 「C:」は抜いて数えるのでしょうか? 「\」も一文字として数えるのでしょうか? どうも初心者ですみませんがどなたか教えてください。

  • 文字列を配列に…。

    VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

  • 文字列を特定文字で分割したい

    はじめまして。宜しくお願いします。 現在Access2002のVBAをつかってタイトルのようなことを実現したいと思っています。 Dim a As String Dim b As String という二つの変数を用意して 「C:\Documents and Settings\デスクトップ\test.csv」という文字列が与えられているとき 変数aには「test.csv」を、変数bには「C:\Documents and Settings\デスクトップ\」を 格納しようとしています。 スマートなやり方がわからず、 文字列の右から一文字ずつ比較して行き、何文字目に「¥」が出てくるかをカウントして、right関数とleft関数で分割を行っています。 このような処理を行う場合、なにか適した関数があると思い探しているのですが、 なかなか見つからず、行き詰っています。(そのような関数があるのかも分からず・・) もしもなにかお気づきの方が居られましたら、ご教授宜しくお願いします。

  • EXCELで文字列を結合して数式を処理したい

    LOOKUP関数を以下のように複数セルにわけて文字列として配置します。 A1:LOOKUP(AL17,'C:\Documents and Settings\My Documents\ファイルA.xls] A2:シート1 A3:'!$A$3:$A$200,'C:\Documents andSettings\My Documents\.xls] A2:シート1 A4:'!$B$3:$B$200) A1からA4までを文字列結合してA5に表示します。 A5:=A1&A2&A3&A2&A4 その上で、A5の数式をA6にて処理したいのですが、うまくいきません。 A6:indirect(A5) のように書いてもエラーとなります。 どなたか打開策を教えてください! #今回はlookup関数の参照するシート名を動的に表現したかったため、   わけて記述し、文字列結合するという形式にしています。   (ここでいうA2がシート名)

  • アクセスする方法

    telnet でアクセスしようとすると拒否されます。 どうしたらアクセスできるでしょうか? ログインユーザーは管理者権限を持っています。(ビルドイン) myDoc対象ユーザーも管理者権限を持っています。 C:\Documents and Settings\*****>cd My Documents アクセスが拒否されました。 C:\Documents and Settings\*****>cacls "My Documents" C:\Documents and Settings\*****\My Documents アクセスが拒否されました。 C:\Documents and Settings\*****>cacls "My Documents" /t /p administrator:F よろしいですか (Y/N)?y アクセスが拒否されました。 普通は(OI)(CI)(IO)F とか出てきますよね。

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。

  • フォルダの表示形式を指定したフォルダ内全てに設定する方法を教えて下さい

    フォルダの表示形式を指定したフォルダ内全てに設定する方法を教えて下さい。 表示形式をすべてのフォルダに適用する設定は、フォルダオプションの表示タブにある「フォルダの表示」から設定しますが、指定したフォルダ内だけに設定できる方法はありますでしょうか。 例 C:\Documents and Settings\USER\My Documents\My Pictures\2009.1\TEST12.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.1\TEST01.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.2\TEST02.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.3\TEST03.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.4\TEST04.jpg My Pictures内にある年月名のフォルダ全てに表示形式を設定したいのです。 以上よろしくお願いします。

専門家に質問してみよう