21xrx.com
2025-04-02 21:28:43 Wednesday
文章检索 我的文章 写文章
Dev C++ 生成的 exe 文件无法读取文件
2023-07-04 18:25:03 深夜i     17     0
Dev C++ exe文件 读取文件

在使用 Dev C++ 进行编程时,有时我们会遇到一些奇怪的问题。其中一个问题就是生成的 exe 文件无法读取文件。

这个问题一般是由于文件路径的问题引起的。Dev C++ 生成的 exe 文件默认是在当前项目的目录下运行的。如果我们使用了相对路径来读取文件,而相对路径和 exe 文件所在的位置不一致,就会出现无法读取文件的情况。

解决这个问题的方法非常简单,我们只需要使用绝对路径来读取文件即可。比如,我们可以使用以下代码来读取文件:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
  ifstream infile("C:/data.txt");
  if(!infile)
  
    cout<<"Unable to open file";
    return 1;       
  
  char c;
  while (infile.get(c))
    cout << c;
  infile.close();
  return 0;
}

上述代码中,我们使用的是 "C:/data.txt" 这样的绝对路径。这样无论 exe 文件在哪里运行,都能找到文件所在的位置,从而成功读取文件。

另外,我们还可以使用 GetModuleFileName 函数来获取 exe 文件所在的路径,从而动态生成正确的文件路径。

#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main()
{
  WCHAR szFilePath[MAX_PATH];
  GetModuleFileNameW(NULL, szFilePath, MAX_PATH);
  wstring strFilePath = szFilePath;
  strFilePath = strFilePath.substr(0, strFilePath.find_last_of(L"\\/")) + L"/data.txt";
  string filePath(strFilePath.begin(), strFilePath.end());
  ifstream infile(filePath);
  if(!infile)
  
    cout<<"Unable to open file";
    return 1;       
  
  char c;
  while (infile.get(c))
    cout << c;
  infile.close();
  return 0;
}

上述代码中,我们使用了 GetModuleFileNameW 函数来获取 exe 文件所在的路径,并动态生成 data.txt 文件所在的路径。这样无论 exe 文件在哪里运行,都能正确读取文件。

总之,Dev C++ 生成的 exe 文件无法读取文件是一个常见的问题,但解决起来非常简单。只要使用绝对路径来读取文件,或者使用 GetModuleFileName 函数动态生成正确的文件路径即可。

  
  

评论区

请求出错了