add LoadStringFromText/LoadStringFromTextFile

This commit is contained in:
2020-08-04 02:20:29 +08:00
parent c2c7c42cd4
commit 3895fbbd4d
2 changed files with 43 additions and 9 deletions

View File

@@ -474,6 +474,11 @@ namespace hgl
return count;
}//int SplitToStringList
template<typename T> int SplitToStringListByEnter(StringList<BaseString<T> > &sl,const BaseString<T> &str)
{
return SplitToStringListByEnter<T>(sl,str.c_str(),str.Length());
}
template<typename T> int SplitToStringList(StringList<BaseString<T> > &sl,const BaseString<T> &str)
{
@@ -643,11 +648,14 @@ namespace hgl
inline int LoadUTF16LEStringList (UTF16StringList & sl,io::DataInputStream *dis){return LoadStringList<u16char, bomUTF16LE >(sl,dis);}
inline int LoadUTF16BEStringList (UTF16StringList & sl,io::DataInputStream *dis){return LoadStringList<u16char, bomUTF16BE >(sl,dis);}
int LoadStringFromText(UTF16String &str,void *data,const int size,const CharSet &default_charset=UTF16LECharSet); ///<从文件加载一个文本块到UTF16StringList
int LoadStringListFromText(UTF8StringList &sl,void *data,const int size,const CharSet &default_charset=UTF8CharSet); ///<从文件加载一个文本块到UTF8StringList
int LoadStringListFromText(UTF16StringList &sl,void *data,const int size,const CharSet &default_charset=UTF16LECharSet); ///<从文件加载一个文本块到UTF16StringList
int LoadStringListFromTextFile(UTF8StringList &sl,const OSString &filename,const CharSet &default_charset=UTF8CharSet); ///<从文件加载一个文本文件到UTF8StringList
int LoadStringListFromTextFile(UTF16StringList &sl,const OSString &filename,const CharSet &default_charset=UTF16LECharSet); ///<从文件加载一个文本文件到UTF16StringList
int LoadStringFromTextFile(UTF16String &str,const OSString &filename,const CharSet &default_charset=UTF16LECharSet); ///<从文件加载一个文本文件到UTF16String
int LoadStringListFromTextFile(UTF8StringList &sl,const OSString &filename,const CharSet &default_charset=UTF8CharSet); ///<从文件加载一个文本文件到UTF8StringList
int LoadStringListFromTextFile(UTF16StringList &sl,const OSString &filename,const CharSet &default_charset=UTF16LECharSet); ///<从文件加载一个文本文件到UTF16StringList
template<typename T,ByteOrderMask bom> struct WriteStringToDOS
{

View File

@@ -77,11 +77,10 @@ namespace hgl
delete[] data;
return line_count;
}
/**
* 加载一个原始文本块到UTF16StringList
* 加载一个原始文本块到UTF16String
*/
int LoadStringListFromText(UTF16StringList &sl,uchar *data,const int size,const CharSet &cs)
int LoadStringFromText(UTF16String &full_text,uchar *data,const int size,const CharSet &cs)
{
u16char *str=nullptr;
@@ -123,7 +122,7 @@ namespace hgl
if((uchar *)str>=data&&(uchar *)str<=data+size) //如果str的地址在data的范围内
{
line_count=SplitToStringListByEnter<u16char>(sl,str,char_count);
full_text.SetString(str,char_count);
}
else
{
@@ -141,13 +140,25 @@ namespace hgl
#endif//
}
line_count=SplitToStringListByEnter<u16char>(sl,str,char_count);
full_text.SetString(str,char_count);
delete[] str;
}
delete[] data;
return line_count;
return char_count;
}
/**
* 加载一个原始文本块到UTF16StringList
*/
int LoadStringListFromText(UTF16StringList &sl,uchar *data,const int size,const CharSet &cs)
{
UTF16String str;
LoadStringFromText(str,data,size,cs);
return SplitToStringListByEnter<u16char>(sl,str);
}
/**
@@ -165,7 +176,22 @@ namespace hgl
return LoadStringListFromText(sl,data,size,cs);
}
/**
/**
* 加载一个原始文本文件到UTF16String
*/
int LoadStringFromTextFile(UTF16String &str,const OSString &filename,const CharSet &cs)
{
uchar *data;
const int size=filesystem::LoadFileToMemory(filename,(void **)&data);
if(size<=0)
return size;
return LoadStringFromText(str,data,size,cs);
}
/**
* 加载一个原始文本文件到UTF16StringList
*/
int LoadStringListFromTextFile(UTF16StringList &sl,const OSString &filename,const CharSet &cs)