2015-12-22 50 views
1

我想从我的代码运行一个shell命令。但是,不会生成输出文件(ts.dat)。 有人可以让我知道如何解决这个问题吗?C++:没有生成系统命令的输出文件

string cmd1, input; 
cout << "Enter the input file name: "; 
cin >> input; 

cmd1 = "grep 'DYNA>' input | cut -c9-14 > ts.dat"; 
system((cmd1).c_str()); 

回答

1
cmd1="grep 'DYNA>' "+input+" | cut -c9-14 > ts.dat"; 

配售input引号内将让编译器解析它作为一个字符串,而不是一个变量。

1

编辑这一行:

cmd1="grep 'DYNA>' input | cut -c9-14 > ts.dat"; 

要这样:

cmd1="grep 'DYNA>' " + input + " | cut -c9-14 > ts.dat"; 

你需要真正从input字符串中使用的值。当前你有你的代码的方式,你只是在你的字符串中写入input这个词,而不是使用存储在字符串中的值。

+0

非常感谢。现在我可以看到我的命令行是通过获取当前输入文件来执行的。但是输出ts.dat仍然没有生成。我在终端中使用了相同的命令来生成输出并且工作。但通过系统(CMD),它不起作用。 :( – vidhya

+0

我试图从一个单一的系统(CMD)语句执行多个命令,并可能导致这个输出没有生成的问题 – vidhya

+0

@vidhya - 确保你正在寻找ts.dat的正确位置。它应该在你的程序的工作目录中。 – pstrjds