尝试用C ++读取文件但不工作

时间:2014-12-23 17:45:30

标签: c++ file ubuntu io

在下面的代码中,我只是尝试打开一个文件并打印它的内容:

#include <iostream>
#include <fstream>

using namespace std;

int main() {

    std::ifstream fin;
    fin.open("ride");

    string line;
     while (fin >> line)
    {
      std::cout << "I am here" << std::endl;
      cout << line << endl;
    }
    fin.close();

    return 0;
}

然而无论我做什么,这个程序都没有进入while循环....为什么?

我正在运行Ubuntu 14.04,该文件名为'ride',它位于我的主目录中,我的源文件恰好是'main.cpp'也位于我的主目录中,此外还有光标放在文件'ride'的开头。我已经尝试将文件名更改为'ride.txt'并使用绝对路径,但似乎没有任何效果。

2 个答案:

答案 0 :(得分:1)

源文件所在的位置无关紧要,因为源文件未被执行。

file必须位于您运行程序的shell的当前工作目录中。

此外,如果您尝试过绝对路径并且仍然无法正常工作,那么您的权限就不足。

您发布的代码没有任何问题。

答案 1 :(得分:0)

程序的当前工作目录可能不是包含文件的目录。

为防止这种情况,您可以:

  1. 使用相对于当前工作目录的路径。 (例如'../ src / bar')
  2. 使用函数chdir在运行时设置当前工作目录。
  3. 使用您文件的完整路径。 (例如'/ home / foo / Desktop / bar')
  4. 如果您使用开发环境,则可以在选项中设置当前工作目录。