2012-02-09 8 views
0

Я пытаюсь запустить мою программу на C++, чтобы открыть файл sql в блокноте ++. Я могу открыть его с помощью блокнота следующим образом:Как открыть файл в блокноте ++ с помощью C++?

system("notepad.exe script_foo.sql"); 

Но это нежелательно, так как оно не отформатировано. . Когда я пытаюсь заменить notepad.exe для блокнота ++ EXE, как это:

system("'C:\Program Files\Notepad++\notepad++.exe' script_foo.sql"); 

Я получаю недопустимую ошибку синтаксиса.

Любые проблемы, в которых я ошибаюсь?

ответ

2

Оболочка WinNT использует двойные кавычки, чтобы содержать пробелы в имени файла. Одиночные кавычки не распознаются. Поэтому вам нужно

"C:\Program Files\Notepad++\notepad++.exe" script_foo.sql 

как ваша команда.

Чтобы внедрить это в исходный код на C++, вам нужно избежать обратных косых черт (как уже упоминал Андре), а также двойных кавычек.

system("\"C:\\Program Files\\Notepad++\\notepad++.exe\" script_foo.sql"); 
+0

Вот и все! Спасибо, Бен. – Switchkick

1

В C++ символ обратной косой черты \ является escape character в строках. Вы должны удвоить обратный слэш, чтобы добиться того, что вы действительно хотите:

system("'C:\\Program Files\\Notepad++\\notepad++.exe' script_foo.sql"); 
+0

Нет кубиков: «Неверное имя файла, имя каталога или тома.» Просто примечание: файл script_foo.sql находится в том же каталоге, что и exe-файл. – Switchkick

+1

Одиночные кавычки также должны быть экранированы. Но оболочка действительно хочет, чтобы вы использовали двойные кавычки вокруг пути с пробелами. –

+0

@Ben: Ха, полностью пропустил этот! –

Смежные вопросы