2009-07-29 7 views
1

は、私たちは、パス変数に格納されたパスを引用符で囲む方法はありますか?

C:\Program Files\TestFolder 

私はプログラム的だと(例えば)varible DIRPATHに保存されている。このパス
今私が連接している文字列、その後DIRPATHになるさ

dirpath=getInstallationpath()+"\\ test.dll /codebase /tlb"; 

てみましょう

C:\Program Files\TestFolder\test.dll /codebase /tlb 

私の問題は、二重引用符で囲まれたパスを作成したことです

"C:\Program Files\TestFolder\test.dll" 

私は直接のCreateProcessにします。regasmのためのコマンドラインとしてDIRPATHを渡すので()、それはCのために受け入れる必要があります:\プログラムだけのため白いspaces.soの私は

dirpath="\ "+getInstallationPath()+" \test.dll /codebase /tlb " 
のようなスタントの多くを試してみましたそのけど...

を働いていなかったので、この点で私をHEPお願い

...事前に

おかげで...

+0

これは、http://stackoverflow.com/questions/1177323/how-to-pass-the-directory-path-as-command-line-for-the-processの問題とどのように違うのですか? – sharptooth

答えて

2

その行には2つの問題があります。まず、test.dllの前にバックスラッシュをエスケープする必要があります。次に、引用符でパスをラップすると、引用符もエスケープする必要があります。

これらの変更後は、それは次のようになります。

dirpath="\""+getInstallationPath()+"\\test.dll\" /codebase /tlb " 

編集:

がマーティンの要求ごとの割り当てを修正しました。最初の文字列の終わりの引用符を忘れてしまった!

+0

dirpathを文字列としてg ++でコンパイルします。 – Eric

2

私はあなたがtest.dllの後に2番目の\ "を忘れてしまったと考えています

2

複雑な文字列を作成する場合、通常は文字列ストリームを使用する方が簡単です(より効果的です)。

// Note the character(") and the character(\) 
// will need to be escaped when used inside a string 
std::stringstream stuff; 
suff << "\"" 
    << getInstallationPath() << "\\test.dll" 
    << "\"" 
    << "/codebase /tlb"; 
               // 
dirpath = stuff.str(); 
+0

ありがとう、非常にたくさん....... – Cute

関連する問題