CPP 读取文件但 EXE 不读取

CPP Reads from File but EXE Doesn't

.cpp文件从.txt文件中读取,编译,运行,完美输出。我希望将输出保存到 .txt 文件,因此我从命令提示符访问该程序。

我正在使用 %PATH%Program.exe>%PATH%P4RESULTS.TXT

它运行程序,但 P4RESULTS.TXT 总是显示 "Unable to read file. Program terminating." 我没有移动或重命名文件 - 它在 .cpp 中。我检查了文件扩展名,看看我是否对 inFile (.txt.txt) 进行了双重命名,但事实并非如此。

有人见过这样的东西吗?有什么明显的我想念的吗?我的输入文件打开方法包括在下面。只是困惑为什么它在 VS2013 中而不是在 .exe 中看到和读取文件。谢谢

    #include <iostream>
    #include <iomanip>
    #include <fstream>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
    #define TABLESIZE     100
    #define KEYSIZE       4
    #define EMPTYKEY      "----"
    #define DATAFILE      "P4DATA.txt"
    using namespace std;
    int main(void)
    {
        ifstream     *inFile;
        InitTable(T, TABLESIZE);       
        inFile = new ifstream();
        inFile->open(DATAFILE, ifstream::in);  
      if (!inFile->is_open())
      {
        cout << "Unable to open data file. Program terminating.\n";
        return 0;
      }//end inFile check
    }

%PATH% 设置为一系列 ; 分隔的目录,用于在当前目录中不存在可执行文件时定位可执行文件。尝试使用 mypath 代替 path 并将 mypath 设置为可执行文件的目录名

set "mypath=c:\wherever\whatever"
pushd "%mypath%"
"%mypath%\yourprogram.exe">"%mypath%\P4RESULTS.TXT"
popd

引号克服了 file/directorynames 中的空格问题。 set 命令中的引号确保行中的尾随空格不包含在分配给 mydir.

的值中

pushd/popd 仪式会暂时将当前目录更改为 mypath。实际上,在那种情况下,在 .exe 行中引用 mypath 是没有必要的。

set "mypath=c:\wherever\whatever"
pushd "path to directory containing p4data.txt"
"%mypath%\yourprogram.exe">"%mypath%\P4RESULTS.TXT"
popd

也可以解决问题