@daneil1

Работа с файлами в c++?

В общем и целом у меня есть задача, есть файл с левым текстом и в этом тексте есть надпись,например - link "namefile.txt", мне нужно взять из этого файла("namefile.txt") весь текст и записать вместо этой надписи (link "namefile.txt") ,но при этом учитывать ,что если в этом файле namefile.txt есть надпись этого же типа(link .... ) только на другой файл.

Например:
Файл: Text.txt
Hello world
test
...
link "test.txt"
...
world Hello

Файл: test.txt
...
link "first.txt"
...

Файл: first.txt
Hello world!


Итог:
Hello world
test
...
...
Hello world!
...
...
world Hello


Целый день с этой проблемой борюсь но никак не выходит. Заранее всем спасибо!
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
daneil1,
уже 2 день с этой задачей борюсь

как это реализовать(теоретически)?

Видимо вы просто не знакомы.
spoiler

#include<iostream>
#include<sstream>
#include<string>
#include<fstream>

using namespace std;

string process(const string& filename)
{
  ostringstream os;
  if(ifstream ifs(filename); ifs)
  {
    string line;
    while(getline(ifs, line))
    {
      if(auto pos = line.find("link"); pos != string::npos)
      {
        pos = line.find('\"', pos);
        auto end = line.find('\"', pos + 1);
        os << process(line.substr(pos + 1, end - pos - 1));
        continue;
      }
      os << line << "\n";
    }
  }
  return os.str();
}

int main()
{
  cout << process("text.txt");
  cin.get();
}

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы