21xrx.com
2024-12-23 02:30:08 Monday
登录
文章检索 我的文章 写文章
Dev C++ 生成的 exe 文件无法读取文件
2023-07-04 18:25:03 深夜i     --     --
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 函数动态生成正确的文件路径即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复