Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Writer {
- public:
- virtual void Write(const char * data, size_t len) {
- for (size_t i = 0; i < len; ++i, ++data) {
- std::cout << *data << ' ';
- }
- std::cout << '\n';
- }
- };
- // #include "writer.h"
- class BufferedWriter : public Writer {
- private:
- size_t size;
- public:
- BufferedWriter(size_t size_) : size(size_) {}
- void Write(const char * data, size_t len) override {
- char * data_ = data;
- char * buff = new char[size];
- char * buff_ = buff;
- size_t size_ = size;
- while (len >= size) {
- while (size_ > 0)
- *buff_ = *data_;
- ++buff_, ++data_, --len, --size_;
- Writer::Write(buff, size);
- size_ = size;
- buff_ = buff;
- }
- size_ = len;
- while (len > 0) {
- *buff_ = *data_;
- --len, ++buff_, ++data_;
- }
- Writer::Write(buff, size_);
- delete[] buff;
- }
- };
- // #include "BufferedWriter.h"
- /*
- int main() {
- char * arr = new char[7];
- char * arr_ = arr;
- char j = '1';
- for (size_t i = 0; i < 7; ++i, ++j) {
- *arr_ = j;
- }
- BufferedWriter buf(3);
- buf.Write(arr, 7);
- delete[] arr;
- } */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement