我在线下载了一个软件包。假设包名为aPackage.zip。解压缩文件夹后,它包含一个可执行文件Cassie.exe,它需要2个输入文件,file1.txt和file2.txt。我只需要双击Cassie.exe,它就会自动开始运行正常。现在我想测量运行Cassie.exe所需的时间,以便在Visual C ++ 2010 express中编写一个新项目(TimeMeasure)的小型c ++程序(main.cpp)。但是,虽然我把Cassie.exe,file1.txt和file2.txt放在同一个文件夹中,但Cassie.exe仍然抱怨它无法打开file2.txt。以下是项目TimeMeasure的main.cpp代码。
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h> /* printf */
#include <time.h> /* clock_t, clock, CLOCKS_PER_SEC */
#include <math.h> /* sqrt */
using namespace std;
int main () {
const clock_t begin_time = clock();
system("C:\\aPackage\\Cassie.exe C:\\aPackage\\file1.txt C:\\aPackage\\file2.txt");
ofstream myfile;
myfile.open ("Time.txt");
myfile << "Time used is %d sec \n"<<float( clock () - begin_time ) / CLOCKS_PER_SEC;
myfile.close();
system("PAUSE");
return 0;
}
TimeMeasure项目是在路径
创建的C:\Users\Cassie\Documents\Visual Studio 2010\Projects\TimeMeasure
这就是我使用aPackage文件夹的绝对路径的原因。我的电脑是Windows 7家庭操作系统。谁能告诉我我做错了什么?非常感谢,
答案 0 :(得分:0)
Cassie.exe
可能会查找当前目录中的两个文件。双击可执行文件以运行它时,当前目录设置为可执行文件所在的目录,因此它可以工作。当您使用system()
时,当前目录保持不变(在本例中是包含TimeMeasure的目录),因此它不起作用。
在致电system
之前使用_chdir
设置当前目录,或尝试使用
system("cd /d C:\\aPackage && Cassie.exe");
与双击它的效果几乎完全相同。