У меня есть простая программа на C ++, в которой перечислены аргументы, которые она получает:
#include <iostream>
int main(int argc, char* argv[]) {
for (int i = 1; i < argc; i++) {
std::cout << argv[i] << std::endl;
}
return 0;
}
Я просто проверяю / выясняю это, но в конечном итоге мы намерены принять имена некоторых файлов и каталогов.
Итак, я передаю следующие аргументы:
"\\server\directory\file.ext" "C:\trailing\backslash\" "file.txt"
Но вот что напечатано:
\\server\directory\file.ext
C:\trailing\backslash" file.txt
т.е. косая черта на втором аргументе заставляет его думать, что закрывающая кавычка экранирована.
Я устанавливаю аргументы на страницах свойств VS2017, но я получаю тот же вывод, когда:
- Я вызываю exe из PowerShell.
- Я разрешаю внешнему инструменту пройти
exe аргументы, которые он построил (который будет, как это в конечном итоге
б).
Как я могу заставить мою программу понять, что путь в кавычках с косой чертой - это один аргумент?
EDIT
Раздел 4 этой статьи точно описывает мою проблему. По сути, я хочу, чтобы моя программа на C ++ интерпретировала аргументы так же, как это делает пакетный файл или VBScript. Я не могу изменить способ ввода аргументов в мою программу
РЕДАКТИРОВАТЬ Я упросту вопрос:
Программа на C ++, приведенная выше, ведет себя так:
Я хочу, чтобы он вел себя так:
Что я должен сделать с программой или компилятором, чтобы это произошло?