C++ system() не работает, когда в двух разных параметрах есть пробелы

Я пытаюсь запустить .exe, который требует некоторых параметров, используя system( ).

Если в пути к .exe И в пути к файлу, переданному в параметрах, есть пробел, я получаю следующую ошибку:

The filename, directory name, or volume label syntax is incorrect.

Вот код, который генерирует эту ошибку:

#include 
#include 

int main (){
    system("\"C:\\Users\\Adam\\Desktop\\pdftotext\" -layout \"C:\\Users\\Adam\\Desktop\\week 4.pdf\"");
    _getch();
}

Если "pdftotext"' s не использует кавычки (они мне нужны, потому что иногда в каталоге будут пробелы), все работает нормально. Кроме того, если я помещу то, что находится в «system()», в строку и выведу ее, а затем скопирую в фактическое командное окно, это сработает.

Я подумал, что, может быть, я мог бы объединить некоторые команды, используя что-то вроде этого:

cd C:\Users\Adam\Desktop;
pdftotext -layout "week 4.pdf"

Таким образом, я уже был бы в правильном каталоге, но я не знаю, как использовать несколько команд в одной и той же функции system().

Может ли кто-нибудь сказать мне, почему моя команда не работает или сработает ли второй способ, о котором я думал?

Редактировать: Похоже, мне понадобился дополнительный набор кавычек, потому что system() передает свои аргументы в cmd /k, поэтому он должен быть в кавычках. Я нашел это здесь:

C++: Как заставить мою программу открывать .exe с необязательными аргументами

, поэтому я проголосую за закрытие как дубликат, поскольку вопросы довольно близки, хотя мы не получали то же самое сообщение об ошибке, спасибо!

13
задан Community 23 May 2017 в 12:09
поделиться