std :: ifstream и чтение файлов - PullRequest
0 голосов
/ 29 января 2019

Так что я застрял на некоторое время с проблемой, и я не могу понять, почему она не работает.Возможно, это что-то действительно глупое, о чем я забыл, но у меня огромная проблема с чтением из файла, расположенного в моем проекте.

Я пытаюсь использовать "res / dir / file.txt" как путь к файлу, но он не будет работать.Я также пытался переместить файл для filepath "file.txt", но ничего.Я перемещал файл по всему проекту, чтобы посмотреть, сможет ли он достать его откуда-то, но безуспешно.Рабочий каталог $ (ProjectDir)

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

Моя функция выглядит примерно так, и я не могу войти в цикл while с помощью (getline (stream, line)), который является моим основным индикатором дляпроблема:

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;
}

Я чувствую себя действительно глупо, потому что знаю, что делал это раньше и никогда не сталкивался с подобной проблемой.Чего мне не хватает?

1 Ответ

0 голосов
/ 29 января 2019

Ваш код работает отлично.Я попробовал это так:

#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
...