0

我在网上下载了一个软件包。假设包名为 aPackage.zip。解压文件夹后,它包含一个可执行文件 Cassie.exe,它需要两个输入文件,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 文件夹的绝对路径。我的电脑是window 7 home OS系统。谁能告诉我我做错了什么?非常感谢,

4

1 回答 1

0

Cassie.exe可能会在当前目录中查找这两个文件。当你双击一个可执行文件运行它时,当前目录设置为可执行文件所在的同一目录,所以它可以工作。当你使用system()当前目录时没有改变(在这种情况下是包含 TimeMeasure 的目录)所以它不起作用。

用于_chdir在调用之前设置当前目录system,或尝试类似

system("cd /d C:\\aPackage && Cassie.exe");

这应该与双击它的效果几乎完全相同。

于 2013-03-06T21:56:50.913 回答