2012-02-09 167 views
0

我想讓我的C++程序在記事本++中打開一個sql文件。我可以用這樣的記事本打開它:如何用C++在記事本++中打開文件?

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

但這是不受歡迎的,因爲它沒有格式化。當我嘗試用notepad.exe替換notepad ++。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

這就是東西!謝謝Ben。 – Switchkick 2012-02-09 06:09:33

1

在C++中,反斜槓字符\是字符串中的escape character。您需要加倍反斜槓才能達到您真正想要的效果:

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

沒有骰子:「文件名稱,目錄名稱或卷標語法不正確。」請注意:script_foo.sql文件與exe文件位於相同的目錄中。 – Switchkick 2012-02-09 05:59:18

+1

單引號也應該逃脫。但shell真的希望你在空間的路徑上使用雙引號。 – 2012-02-09 06:03:56

+0

// @本:哈,完全錯過了那個! – 2012-02-09 06:39:34

相關問題