让我们有一条路径
C:\Program Files\TestFolder
这条路径我以编程方式存储并存储在一个可变的dirpath(例如)中 现在我已经连接了字符串
dirpath=getInstallationpath()+"\\ test.dll /codebase /tlb";
然后dirpath成为
C:\Program Files\TestFolder\test.dll /codebase /tlb
但我的问题是我用双引号括起来的路径
"C:\Program Files\TestFolder\test.dll"
因为当我直接将dirpath作为regasm的命令行传递给CreateProcess()时,它应该只接受C:\ Program因为空格。所以我尝试了许多特技,如
dirpath="\ "+getInstallationPath()+" \test.dll /codebase /tlb "
像这样,但没有奏效......
所以请在这方面给我打气......
提前致谢...
答案 0 :(得分:2)
我相信你忘了第二个\“在test.dll之后
答案 1 :(得分:2)
我可以看到该行的两个问题。首先,您需要转义test.dll之前的反斜杠。其次,将路径包装在引号中需要您也转义引号。
完成这些更改后,它应如下所示:
dirpath="\""+getInstallationPath()+"\\test.dll\" /codebase /tlb "
修改强>
根据Martin的要求修正了作业。忘了第一个字符串的右引号!
答案 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();