【问题标题】:.CPP File and .EXE File With Inconsistant Logic.CPP 文件和 .EXE 文件的逻辑不一致
【发布时间】:2014-03-04 05:38:12
【问题描述】:

在我构建代码之前,我从来没有遇到过这个问题,主要的错误检查 if 语句在控制台中运行正确。

ifstream inputfile;
inputfile.open("arrayNumbers.txt");

if(inputfile) //<----- This is working correctly in the CPP, but not in the EXE
{

不幸的是,当我运行可执行文件时,if 语句跳到“文件未打开”的 else 部分

else
{
    cout << "File did not open" << endl; 
            //^^^^In the exe, the program skips the rest of the code and kicks here
}

有人知道为什么会这样吗?

编译器是 Visual Studio 2010

我也在调试和发布模式下运行过它

【问题讨论】:

  • 我假设当您的意思是“运行 CPP”时,您是从 Visual Studio 的“调试”菜单启动程序,而当您运行 EXE 时,您实际上是在双击 EXE 文件(或等效文件) ) - 如果是这种情况,问题可能出在 arrayNumbers.txt 文件的位置。尝试将该文件复制到带有 EXE 的文件夹并运行 EXE 然后
  • 更正了调试菜单。我以为 Visual Studio 会读取整个程序文件夹以查找文本文件,但我想不会。复制过来,发现还不错。 VS不会搜索所有文件夹的任何原因?
  • Visual Studio 不搜索文件:程序从它认为的“当前目录”打开文件:当您直接运行 EXE 文件时,此目录是 EXE 文件所在的位置,当您从 Visual Studio 运行它,Visual Studio 将当前目录设置为与项目相关的内容,以方便您。请注意,在这两种情况下,您实际上都在运行相同的 EXE 文件——Visual Studio 必须将 C++ 源代码编译为 EXE 才能运行它

标签: c++


【解决方案1】:

这可能与文件arrayNumbers.txt 的存储位置有关,将文件移动到与可执行文件相同的文件夹中,它应该可以工作。

【讨论】:

  • 我以为 VS 会搜索它的所有文件,但我想不会。继续前进,将其移过来,可执行文件运行良好。谢谢。
【解决方案2】:

当你在 Visual Studio 中运行时,文件是从解决方案文件夹运行的,当你双击 .exe 时,大部分时间你是从 Project->Debug-> 文件夹运行的

您可以在项目中添加一个构建后事件,以自动将文件复制到您的输出目录。

copy $(SolutionDir)/arrayNumbers.txt $(OutDir)

【讨论】:

  • 酷。很好记住未来的项目。 你知道的越多
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 2011-12-15
相关资源
最近更新 更多