Как заключить путь, хранящийся в переменной, в кавычки? - PullRequest
1 голос
/ 29 июля 2009

Пусть у нас будет путь

C:\Program Files\TestFolder

этот путь я получил программным путем и сохранил в переменной пути (например)
Теперь у меня есть конкатенированная строка

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 "

так, но не сработало ...

Так что, пожалуйста, помогите мне в этом отношении ...

Заранее спасибо ...

Ответы [ 3 ]

2 голосов
/ 29 июля 2009

Я вижу две проблемы с этой строкой. Прежде всего, вам нужно избежать обратной косой черты, предшествующей test.dll. Во-вторых, для переноса пути в кавычки необходимо также избегать кавычек.

После этих изменений это должно выглядеть так:

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

Edit:

Исправлено назначение по запросу Мартина. Забыли заключительную кавычку для первой строки!

2 голосов
/ 29 июля 2009

Для построения сложных строк обычно проще (и эффективнее) использовать поток строк.

// 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();
2 голосов
/ 29 июля 2009

Полагаю, вы забыли второе \ "после test.dll

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...