std :: ifstream和读取文件

时间:2019-01-29 11:16:07

标签: c++ ifstream

所以我已经困扰了一段时间了,我不知道为什么它不起作用。我可能已经忘记了这件事,但确实很愚蠢,但是从项目中的文件读取时遇到了很大的问题。

我正在尝试使用“ res / dir / file.txt”作为文件路径,但无法正常工作。我也尝试过将文件移到“ file.txt”文件路径,但什么也没有。我一直在整个项目中移动文件,以查看是否可以从某个地方访问该文件,但没有成功。工作目录为$(ProjectDir)

streamFile("res/dir/file.txt");

我的函数看起来像这样,我无法使用(getline(stream,line))进入while循环,这是该问题的主要指标:

void streamFile(const std::string& filepath)
{
    std::ifstream stream(filepath);
    std::string line;
    while (getline(stream, line))
    {
        if (line.find("#Example") != std::string::npos)
        {

        }
        else
        {

        }
    }   
    return;
}

我感到atm真的很愚蠢,因为我知道我以前做过,而且从未遇到过类似的问题。我想念什么?

1 个答案:

答案 0 :(得分:0)

您的代码运行正常。我是这样尝试的:

#include <iostream>
#include <fstream>

int main(void)
{
  std::ifstream stream("./res/dir/test.txt");
  std::cout << (stream.is_open() ? "file successfully opened" : "file could not be opened") << std::endl;
  std::string line;
  while (getline(stream, line))
  {
    std::cout << "line read: " << line << std::endl;
    if (line.find("my") != std::string::npos)
    {
      std::cout << "\t ... found magic word" << std::endl;
    }
    else
    {
      std::cout << "\t ... no magic word in this line" << std::endl;
    }
  }
}

./ res / dir / test.txt

hello world
my name is john doe
how are you?

输出符合预期:

file successfully opened
line read: hello world
     ... no magic word in this line
line read: my name is john doe
     ... found magic word
line read: how are you?
     ... no magic word in this line