【问题标题】:C++ fstream won't open a text file in windowsC ++ fstream不会在Windows中打开文本文件
【发布时间】:2020-10-13 17:21:57
【问题描述】:

我写了一个简单的程序,我需要从文件中读取一些数字。

vector<unsigned long> readFile() {
ifstream dat("primes.txt", ios::in);
vector<unsigned long> praSt;
unsigned long i = 0;

while (dat >> i) praSt.push_back(i);

dat.close();

return praSt; }

我需要从文本文件中读取一些素数并用它们做某些事情。问题是dat 总是以NULL 结束。我尝试了一些人推荐的绝对文件路径、相对路径和\\ 的路径,但没有任何效果。

如果我在 Ubuntu VM 中运行它,它可以工作并且读取文件没有问题。但我习惯于在 Visual Studio (2019) 中进行调试。对于如何解决这个愚蠢的问题,我们将不胜感激。感谢您的宝贵时间。

【问题讨论】:

  • 尝试一个实验:在您的代码中,打开一个要写入的文件,编写一些示例文本,然后关闭它。在您的文件系统中搜索此文件。读取文件时,包含文件夹将默认。
  • 或者,您可以简单地使用GetCurrentDirectory() 查询调用进程的当前工作文件夹,这将告诉您使用相对路径打开文件时从何处访问文件。

标签: c++ visual-studio fstream


【解决方案1】:

您可以在项目属性的“调试”选项卡中设置 Visual Studio 的工作目录。

默认值为$(ProjectDir)

假设您需要的文件位于当前工作目录中是一种非常危险的做法——它可能会根据您启动程序的方式而改变。您应该使用“知名”路径(如 Windows 上的 APPDATA)或相对于可执行文件的路径(然后您可以在运行时构建该路径)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多