Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <cstring>
- #include <iostream>
- #include <string>
- class BufferedWriter {
- public:
- char buffer[16];
- std::size_t filled;
- BufferedWriter() {
- std::fill(this->buffer, this->buffer + sizeof(this->buffer), 0);
- this->filled = 0;
- }
- std::size_t write(const char* bytes, const size_t length) {
- if (length > sizeof(this->buffer) - filled) {
- std::size_t total = this->flush() + length;
- std::cout << std::string(bytes, length);
- return total;
- } else {
- std::strncpy(this->buffer + filled, bytes, length);
- this->filled += length;
- return 0;
- }
- }
- std::size_t flush() {
- if (this->filled == 0) {
- return 0;
- }
- std::cout << std::string(this->buffer, this->filled);
- std::size_t total = this->filled;
- this->filled = 0;
- std::fill(this->buffer, this->buffer + sizeof(this->buffer), 0);
- return total;
- }
- };
- int main(int argc, char** argv) {
- BufferedWriter writer;
- writer.write("hello\n", 6);
- writer.write("world\n", 6);
- writer.write("12345678\n", 9);
- writer.write("lol\n", 4);
- std::cout << "all writes made, flushing the buffer..." << std::endl;
- writer.flush();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement