C++查找文件字符串并输出上一行字符串

写了很多次都达不了那种效果
我的思路是这样的

在一个很大的文件中(39.mb)
寻找字符串

寻找过后匹配的字符串再往上一行 再把上一行那个字符串输出到文件

图示
寻找字符串 Data stream sharing
目标文件 Pagedata.txt
寻找到这个字符串后
输出这一行字符串上一行的字符串
输出到 Data.txt
谢谢

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

int main() {
  std::string line, last, str = "Data stream sharing";
  std::ifstream in_file("Pagedata.txt");
  std::ofstream out_file("Data.txt");
  while (std::getline(in_file, line)) {
    if (line.find(str) != std::string::npos)
      out_file << last << '\n';
    last = line;
  }
  return 0;
}