33 lines
871 B
C++
33 lines
871 B
C++
#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<unsigned char>(c);
|
|
}
|
|
|
|
bool StringReader::readBytes(uint8_t* buf, size_t len) {
|
|
in.read(reinterpret_cast<char*>(buf), static_cast<std::streamsize>(len));
|
|
return static_cast<size_t>(in.gcount()) == len;
|
|
}
|
|
|
|
std::string StringReader::readString(size_t len) {
|
|
std::string s;
|
|
s.resize(len);
|
|
in.read(reinterpret_cast<char*>(&s[0]), static_cast<std::streamsize>(len));
|
|
std::streamsize got = in.gcount();
|
|
if (static_cast<size_t>(got) < len) s.resize(static_cast<size_t>(got));
|
|
return s;
|
|
}
|
|
|
|
std::string StringReader::readLine() {
|
|
std::string s;
|
|
if (!std::getline(in, s)) return std::string();
|
|
return s;
|
|
}
|