【问题标题】:Error reading txt file c++读取txt文件c ++时出错
【发布时间】:2013-11-08 20:54:28
【问题描述】:

我有这段代码可以读取一个 txt 文件。 但由于某种原因,我总是得到*File not found,这意味着fileIn.fail() 失败了......

#include <iostream>
#include <string.h>
#include <fstream>
#include <sstream>
#include <stdio.h>


using namespace std;

int main ()
{
    string fileName;
    ifstream fileIn;
    bool x;

    cout << "enter file name \n";
    cin  >> fileName;

    fileIn.open(fileName);

    if(fileIn.fail())
    {
        cerr << "* File not found";
        return true;
    }

该文件与我的 main.cpp 文件位于同一文件夹中并命名为 input.txt。我试图设置文件名硬编码,但这也没有用。 我的代码有什么问题?

这里是项目:

【问题讨论】:

  • 打不开不代表找不到,可能还有其他错误。但是,当您运行程序时,与可执行文件(以及您要读取的文件)所在的文件夹相比,您在哪个文件夹中?你在同一个文件夹吗?在另一个文件夹中?
  • 我正在使用 xcode(第一次)所以我不确定它把 exe 文件放在哪里...我需要在哪里寻找它们?
  • 第一次使用 IDE 的用户总是有问题 ;-)
  • 要在 XCode 中找到输出位置,请尝试打开“产品”下的解决方案树。右键单击“question2”,然后在 Finder 中显示。
  • 用绝对路径测试这个。如果那失败了它最有可能的权限。

标签: c++ stream


【解决方案1】:

这是一个清单:

  1. 您是否有权读取/访问该文件?
  2. 您是文件的所有者吗?(Linux)
  3. 您是否提供了来自可执行文件的正确路径(相对路径还是绝对路径)?

如果其中任何一个的答案是否定的,那么这就是问题所在,而不仅仅是“找不到文件”错误。

--编辑--

@VladIoffe 我在那里看到的可执行文件是 qustion2,而您必须提供的相对路径是 ../input.txt 而不是 input.txt

【讨论】:

  • 我用的是mac,我不确定exe文件放在哪里。有什么帮助吗?
  • 好吧,给我看看你的目录结构,也许是截图,我会告诉你它在哪里。 @VladIoffe
  • 我添加了截图
  • @VladIoffe 我在那里看到的可执行文件是quiston2,您必须提供的相对路径是../input.txt 而不是input.txt
  • 是的,我现在在尝试移动输入文件时看到了它。仍然找不到文件。
【解决方案2】:

您应该使用文件名的绝对路径。

【讨论】:

    【解决方案3】:

    Absoulut 路径将始终有效。但我讨厌完整路径,我更喜欢相对路径,原因很简单:代码更便携。 如果您在可执行文件的同一路径中使用 input.txt 运行程序,它将起作用。但是当你使用 IDE 时,你必须在 IDE 设置中设置当前目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多