尝试运行在 C++ 中读取的文件时出错

Posted

技术标签:

【中文标题】尝试运行在 C++ 中读取的文件时出错【英文标题】:Error trying to run a file being read in C++ 【发布时间】:2015-05-29 06:33:03 【问题描述】:

我正在尝试读取一个文件,以便平均出文件中列出的数字。我相信我的代码是正确的,但我在 Visual Studio 中不断收到错误消息,指出“无法启动程序......系统找不到指定的文件。”我要阅读的文件“numbers.dat”在目录中,但它仍然显示此错误。

我是 C++ 新手,所以我想知道是否有人可以提供帮助?

这是我的代码

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main() 
    ifstream myfile;
    myfile.open("numbers.dat");
    int total = 0, count = 0, num;
    while (!myfile.eof())
        myfile>>num;
        total += num;
        count++;
    

    cout<<"The "<<count<<" numbers total "<<total<<" and average "<<total/count<<endl;
    myfile.close();
    system("pause");
    return 0;

【问题讨论】:

你的文件和代码文件在同一个目录吗?这就是问题 与你的问题无关,但需要阅读Why is “while ( !feof (file) )” always wrong?。 我怀疑特定消息是否在输出窗口中,因为无法打开您指定的文件。相反,该特定消息通常是因为可执行 Visual Studio 正在尝试加载,因为无法加载被调试对象根本。引导您跟踪对于这样一个简单的程序这是项目错误配置还是缺少依赖项(例如,redist DLL)将非常耗时,您最好花时间创建一个新的控制台 项目,复制你的源代码,并尝试一个新的项目。 短版:“无法启动程序”意味着您的代码甚至没有加载;因此,您的 running 代码是否能够打开您想要的文件甚至还没有成为问题,因为您的代码甚至没有运行,因为 VS 没有成功加载它。 【参考方案1】:

Spanky 很可能是正确的,但要提供更多信息 -

Visual Studio 将您的程序编译到构建目录中。当您通过 Visual Studio 运行程序时,它从构建目录运行。默认情况下,构建目录与您的源代码不是同一个文件夹,因此您的程序不会在其中找到与您的源代码混合的文件。

可能的解决方案:

您可以将文件复制到您的构建目录中 您可以更改构建目录 您可以使用绝对或相对文件路径指向正确的位置

【讨论】:

【参考方案2】:

我不使用 MSS 进行开发,但人们通常会错过一个目录,程序启动的位置,以及目录 认为程序推出,都不同。

例如,你有一个构建目录 d:\project\build,

编译后的二进制文件 (.exe) 位于 d:\project\build\debug 目录。

好吧,您的 numbers.dat 应该位于 d:\project\build 目录中,而 NOT 位于 d:\project\build\debug。

【讨论】:

以上是关于尝试运行在 C++ 中读取的文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

尝试从文件中读取矢量时出错

在 C++ 中计算文本文件中的文本行数时出错

尝试在 Windows 上执行 C++ 时出错(通过 MinGW 编译)

在 IIS 中使用 UNC 名称时出错

Apache 说打开文件读取时出错:权限被拒绝

在 GCC 中编译 C++ 文件时出错