【问题标题】:CPP Reads from File but EXE Doesn'tCPP 从文件读取但 EXE 不读取
【发布时间】:2016-03-03 14:16:51
【问题描述】:

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

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

它运行程序,但 P4RESULTS.TXT 总是显示“无法读取文件。程序终止。”我没有移动或重命名该文件 - 它与 .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
    }

【问题讨论】:

  • P4DATA.txt 是否在您运行 exe 的命令提示符的当前工作目录中?
  • %PATH%Program.exe&gt;%PATH%P4RESULTS.TXT 我希望你在里面放了一些路径,而不是真正使用%PATH%
  • 当您执行该程序时,该程序期望P4DATA.txt 位于当前工作目录中。在您运行exe 之前和之后,dir 是否在目录中同时显示exetxt,包括P4RESULTS.TXT
  • 是的,我在其中放置了一条真实路径,而不是 %PATH%。 P4DATA.txt .... 这是一个好问题。命令提示符显示为 C:\Users\Name - 我所有的文件都在 C:\Users\Name\Documents....等中,是吗?
  • 文件夹有.exe文件。 P4DATA.txt 位于包含 .cpp 文件的文件夹中。当我运行提示时,它会创建 P4RESULTS.txt。 P4DATA.txt 仍然存在。我尝试将 P4DATA.txt 放在带有 .exe 文件的文件夹中,得到了相同的结果。

标签: c++ file-io command-prompt iostream


【解决方案1】:

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

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

引号克服了文件/目录名中的空格问题。 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

也可以解决问题

【讨论】:

  • 问题仍然是应用程序找不到数据文件,因为当前工作目录没有P4DATA.txt。在执行应用程序之前尝试向cd %mypath% 添加一行。
  • 非常感谢你们两个。起初它没有工作,直到我添加 cd %mypath%。
猜你喜欢
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 2013-05-09
  • 1970-01-01
相关资源
最近更新 更多