Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Writer {
  4. public:
  5. virtual void Write(const char * data, size_t len) {
  6. for (size_t i = 0; i < len; ++i, ++data) {
  7. std::cout << *data << ' ';
  8. }
  9. std::cout << '\n';
  10. }
  11. };
  12.  
  13. // #include "writer.h"
  14.  
  15. class BufferedWriter : public Writer {
  16. private:
  17. size_t size;
  18. public:
  19. BufferedWriter(size_t size_) : size(size_) {}
  20.  
  21. void Write(const char * data, size_t len) override {
  22. char * data_ = data;
  23. char * buff = new char[size];
  24. char * buff_ = buff;
  25. size_t size_ = size;
  26. while (len >= size) {
  27. while (size_ > 0)
  28. *buff_ = *data_;
  29. ++buff_, ++data_, --len, --size_;
  30. Writer::Write(buff, size);
  31. size_ = size;
  32. buff_ = buff;
  33. }
  34. size_ = len;
  35. while (len > 0) {
  36. *buff_ = *data_;
  37. --len, ++buff_, ++data_;
  38. }
  39. Writer::Write(buff, size_);
  40. delete[] buff;
  41. }
  42. };
  43.  
  44.  
  45. // #include "BufferedWriter.h"
  46. /*
  47. int main() {
  48. char * arr = new char[7];
  49. char * arr_ = arr;
  50. char j = '1';
  51. for (size_t i = 0; i < 7; ++i, ++j) {
  52. *arr_ = j;
  53. }
  54.  
  55. BufferedWriter buf(3);
  56.  
  57. buf.Write(arr, 7);
  58.  
  59. delete[] arr;
  60. } */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement