implemented rfile reading
This commit is contained in:
parent
ba18b92116
commit
5d2a0f867c
5 changed files with 107 additions and 0 deletions
27
simulator_SIC_XE/src/string_reader.cpp
Normal file
27
simulator_SIC_XE/src/string_reader.cpp
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue