2012-02-09 168 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

相关问题