Как бороться с пробелами в путях при использовании system ()? - PullRequest
0 голосов
/ 26 мая 2011

Я все еще новичок в C ++ и пытаюсь открыть программу в моей программе C ++. Проблема состоит в том, что всякий раз, когда у меня есть пробелы в моих путях, он видит его как разные параметры.

int _tmain(int argc, _TCHAR* argv[])
{
    system("C:\\Users\\blah\\Desktop\\a\\ b.txt");
    return 0;
}

Вывод, который я получаю:

'C:\Users\blah\Desktop\a\' is not recognized as an internal or external command, operable program or batch file.

Ответы [ 2 ]

3 голосов
/ 26 мая 2011

Вы можете заключить в кавычки ваш строковый литерал. Редактировать: Также только что заметил, что ваши обратные слэши не были экранированы, поэтому обновлено ниже: P

system("\"C:\\Users\\blah\\Desktop\\a\\ b.txt\"");

Также позвольте узнать, что вы действительно не должны использовать system.Попробуйте fork, spawn или, возможно, даже неофициальный класс boost.process, функциональность которого аналогична классу процессов .NET, в зависимости от ваших потребностей.Также подумайте, зачем вам запускать процесс из процесса ... возможно, вы могли бы создать библиотеку?

1 голос
/ 26 мая 2011

В Unix вы можете использовать fork () + exec ().

В Windows проверьте spawn .

Они запускают программу напрямую, избегая интерпретатора командной оболочки, тем самым избегая какой-либо специальной обработки специальных символов, таких как пробелы.

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