// "iterator.cpp"
#include <fstream>
#include <iterator>
using namespace std;
int main() {
typedef istream_iterator<unsigned char> input_iter_t;
typedef ostream_iterator<unsigned char> output_iter_t;
const off_t SIZE = 12;
char before[SIZE] = { 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x74 };
char after[SIZE] = { 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74 };
fstream f("iterator.cpp", ios::binary | ios::in | ios:
ut);
if (search(input_iter_t(f), input_iter_t(), before, before + SIZE) != input_iter_t()) {
f.seekp(-SIZE, ios::cur); // I don't like this
f.write(after, SIZE);
}
}