我遇到的问题是,我有一个文本文件,其中包含大量的垃圾,而在底部只有几行可容纳我所需的信息。我希望能够删除所有垃圾,只保留有用的信息。
我希望我可以附加文本文件,以便对其进行更好的解释。
有一个与我正在执行的帖子相关的特定帖子,但是我一直关注它,但是它并没有解决我遇到的问题。我已经尝试过数组和许多其他事情,但都行不通。
其中包含类似信息
|83Ïú¯–ŸªÖ!
仅在文本文件的底部具有
000---------
我想保留000之后的所有内容,其余部分我想删除。
答案 0 :(得分:1)
std::ifstream fin(orig_filename, std::ios::binary);
std::ofstream fout(temp_filename, std::ios::binary);
std::string marker = "000---------";
auto it =
std::search(std::istreambuf_iterator<char>(fin),
std::istreambuf_iterator<char>(), marker.begin(), marker.end());
fin
复制到fout
(如果找到了模式): if(it == std::istreambuf_iterator<char>()) {
std::cout << "pattern " << marker << " not found\n";
} else {
// the iterator "it" is now at the last char in the marker pattern,
// step over it and copy the rest to fout
std::copy(++it, std::istreambuf_iterator<char>(),
std::ostreambuf_iterator<char>(fout));
}
std::rename(temp_filename, orig_filename);
注意:仅在Windows上需要以std::ios::binary
模式打开文件。