#include "string_reader.h" StringReader::StringReader(const std::string &s) : in(s) {} StringReader::~StringReader() = default; int StringReader::readByte() { char c; if (!in.get(c)) return -1; return static_cast(c); } bool StringReader::readBytes(uint8_t* buf, size_t len) { in.read(reinterpret_cast(buf), static_cast(len)); return static_cast(in.gcount()) == len; } std::string StringReader::readString(size_t len) { std::string s; s.resize(len); in.read(reinterpret_cast(&s[0]), static_cast(len)); std::streamsize got = in.gcount(); if (static_cast(got) < len) s.resize(static_cast(got)); return s; } std::string StringReader::readLine() { std::string s; if (!std::getline(in, s)) return std::string(); return s; }