From 88c71d8f21a32b54ab5eb0e888711b25c0eaa178 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Sat, 25 Jan 2020 19:21:56 +0100 Subject: [PATCH] hwrite/hread string now works with long strings (over 255 characters) --- hprint.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/hprint.cpp b/hprint.cpp index 0c618ca5..41f16424 100644 --- a/hprint.cpp +++ b/hprint.cpp @@ -76,8 +76,18 @@ template void hread_raw(hstream& hs, T& c) { hs.read_chars((char*) &c, template::value || std::is_enum::value>::type> void hwrite(hstream& hs, const T& c) { hwrite_raw(hs, c); } template::value || std::is_enum::value>::type> void hread(hstream& hs, T& c) { hread_raw(hs, c); } -inline void hwrite(hstream& hs, const string& s) { hs.write_char(isize(s)); for(char c: s) hs.write_char(c); } -inline void hread(hstream& hs, string& s) { s = ""; int l = (unsigned char) hs.read_char(); for(int i=0; i= 255) { + hs.write_char(255); + hs.write(isize(s)); + } + for(char c: s) hs.write_char(c); + } +inline void hread(hstream& hs, string& s) { + s = ""; int l = (unsigned char) hs.read_char(); + if(l == 255) l = hs.get(); + for(int i=0; i