From f895b3c3b08a4cb7abd3b2b8ca49faa9c8512f5a Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 13 Jan 2020 20:12:15 +0800 Subject: [PATCH] add new Construct function of BaseString from InputStream --- inc/hgl/io/OutputStream.h | 2 +- inc/hgl/type/BaseString.h | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/inc/hgl/io/OutputStream.h b/inc/hgl/io/OutputStream.h index 624f6cf..db686e8 100644 --- a/inc/hgl/io/OutputStream.h +++ b/inc/hgl/io/OutputStream.h @@ -26,7 +26,7 @@ namespace hgl virtual bool CanSize()const=0; ///<是否可以取得尺寸 virtual bool Restart()=0; ///<复位访问指针 - virtual int64 Seek(int64,SeekOrigin=SeekOrigin::Begin)=0; ///<移动访问指针 + virtual int64 Seek(int64,SeekOrigin=SeekOrigin::Begin)=0; ///<移动访问指针 virtual int64 Tell()const=0; ///<返回当前访问位置 virtual int64 GetSize()const=0; ///<取得流长度 virtual int64 Available()const=0; ///<剩下的可以不受阻塞写入的字节数 diff --git a/inc/hgl/type/BaseString.h b/inc/hgl/type/BaseString.h index 2934b5a..9f004ee 100644 --- a/inc/hgl/type/BaseString.h +++ b/inc/hgl/type/BaseString.h @@ -2,6 +2,7 @@ #define HGL_TYPE_BASE_STRING_INCLUDE #include +#include #include #include @@ -29,6 +30,24 @@ namespace hgl Set(str); } + BaseString(io::InputStream *is,int len=0) + { + if(len<=0) + len=is->Available(); + + if(len<=0) + return; + + len/=sizeof(T); + + T *str=new T[len+1]; + + len=is->Read(str,len*sizeof(T)); + + str[len]=0; + Set(str,len,true); + } + explicit BaseString(const T); static BaseString charOf(const T &ch)