removed field_count in construct function, and then added WriteHeader in CSVOutput/CSVOutputStream
This commit is contained in:
parent
cfb772cb55
commit
1f8d32087e
@ -13,7 +13,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
io::TextOutputStream *tos;
|
io::TextOutputStream *tos;
|
||||||
|
|
||||||
uint FieldCount;
|
int FieldCount;
|
||||||
|
|
||||||
T FieldsTerminatedChar;
|
T FieldsTerminatedChar;
|
||||||
T EnclosedChar;
|
T EnclosedChar;
|
||||||
@ -22,15 +22,15 @@ namespace hgl
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
uint write_count;
|
int left_count;
|
||||||
|
|
||||||
void NextField()
|
void NextField()
|
||||||
{
|
{
|
||||||
--write_count;
|
--left_count;
|
||||||
|
|
||||||
if(!write_count)
|
if(!left_count)
|
||||||
{
|
{
|
||||||
write_count=FieldCount;
|
left_count=FieldCount;
|
||||||
tos->WriteLineEnd();
|
tos->WriteLineEnd();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -40,13 +40,12 @@ namespace hgl
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
CSVOutput( io::TextOutputStream *os, //文本输出流
|
CSVOutput( io::TextOutputStream *os, //文本输出流
|
||||||
const uint field_count, //字段数量
|
|
||||||
const T fields_terminated_char=T(','), //字段分隔符
|
const T fields_terminated_char=T(','), //字段分隔符
|
||||||
const T enclosed_char=T('"')) //字符串包裹字符
|
const T enclosed_char=T('"')) //字符串包裹字符
|
||||||
{
|
{
|
||||||
tos=os;
|
tos=os;
|
||||||
|
|
||||||
FieldCount =field_count;
|
FieldCount =0;
|
||||||
|
|
||||||
FieldsTerminatedChar=fields_terminated_char;
|
FieldsTerminatedChar=fields_terminated_char;
|
||||||
|
|
||||||
@ -55,7 +54,7 @@ namespace hgl
|
|||||||
NullStringField[0] =enclosed_char;
|
NullStringField[0] =enclosed_char;
|
||||||
NullStringField[1] =enclosed_char;
|
NullStringField[1] =enclosed_char;
|
||||||
|
|
||||||
write_count =FieldCount;
|
left_count =0;
|
||||||
}
|
}
|
||||||
|
|
||||||
~CSVOutput()=default;
|
~CSVOutput()=default;
|
||||||
@ -98,6 +97,10 @@ namespace hgl
|
|||||||
WriteString(str);
|
WriteString(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WriteHeader(const StringList<T> &sl){left_count=FieldCount=sl.GetCount(); WriteStringList(sl);}
|
||||||
|
void WriteHeader(const std::initializer_list<String<T>> &sl){left_count=FieldCount=(int)sl.size(); WriteStringList(sl);}
|
||||||
|
void WriteHeader(const std::initializer_list<const T *> &sl){left_count=FieldCount=(int)sl.size(); WriteStringList(sl);}
|
||||||
|
|
||||||
template<typename I>
|
template<typename I>
|
||||||
void WriteInteger(const I &value)
|
void WriteInteger(const I &value)
|
||||||
{
|
{
|
||||||
@ -119,8 +122,8 @@ namespace hgl
|
|||||||
using UTF16CSVOutput=CSVOutput<u16char>;
|
using UTF16CSVOutput=CSVOutput<u16char>;
|
||||||
using UTF32CSVOutput=CSVOutput<u32char>;
|
using UTF32CSVOutput=CSVOutput<u32char>;
|
||||||
|
|
||||||
inline CSVOutput<u8char> * CreateUTF8CSVOutput (io::TextOutputStream * tos,const uint fc,const u8char ftc=U8_TEXT (','),const u8char ec=U8_TEXT ('"')){return(new UTF8CSVOutput (tos,fc,ftc,ec));}
|
inline CSVOutput<u8char> * CreateUTF8CSVOutput (io::TextOutputStream * tos,const u8char ftc=U8_TEXT (','),const u8char ec=U8_TEXT ('"')){return(new UTF8CSVOutput (tos,ftc,ec));}
|
||||||
inline CSVOutput<u16char> * CreateUTF16CSVOutput (io::TextOutputStream * tos,const uint fc,const u16char ftc=U16_TEXT(','),const u16char ec=U16_TEXT('"')){return(new UTF16CSVOutput(tos,fc,ftc,ec));}
|
inline CSVOutput<u16char> * CreateUTF16CSVOutput (io::TextOutputStream * tos,const u16char ftc=U16_TEXT(','),const u16char ec=U16_TEXT('"')){return(new UTF16CSVOutput(tos,ftc,ec));}
|
||||||
inline CSVOutput<u16char> * CreateUTF32CSVOutput (io::TextOutputStream * tos,const uint fc,const u32char ftc=U32_TEXT(','),const u32char ec=U32_TEXT('"')){return(new UTF16CSVOutput(tos,fc,ftc,ec));}
|
inline CSVOutput<u16char> * CreateUTF32CSVOutput (io::TextOutputStream * tos,const u32char ftc=U32_TEXT(','),const u32char ec=U32_TEXT('"')){return(new UTF16CSVOutput(tos,ftc,ec));}
|
||||||
}//namespace util
|
}//namespace util
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
|
@ -43,6 +43,10 @@ namespace hgl
|
|||||||
void WriteStringList(const std::initializer_list<String<T>> &sl){return csv->WriteStringList(sl);}
|
void WriteStringList(const std::initializer_list<String<T>> &sl){return csv->WriteStringList(sl);}
|
||||||
void WriteStringList(const std::initializer_list<const T *> &sl){return csv->WriteStringList(sl);}
|
void WriteStringList(const std::initializer_list<const T *> &sl){return csv->WriteStringList(sl);}
|
||||||
|
|
||||||
|
void WriteHeader(const StringList<T> &sl){csv->WriteHeader(sl);}
|
||||||
|
void WriteHeader(const std::initializer_list<String<T>> &sl){csv->WriteHeader(sl);}
|
||||||
|
void WriteHeader(const std::initializer_list<const T *> &sl){csv->WriteHeader(sl);}
|
||||||
|
|
||||||
template<typename I>
|
template<typename I>
|
||||||
void WriteInteger(const I &value){csv->WriteInteger(value);}
|
void WriteInteger(const I &value){csv->WriteInteger(value);}
|
||||||
|
|
||||||
@ -50,14 +54,14 @@ namespace hgl
|
|||||||
void WriteFloat(const F &value,const uint frac){csv->WriteFloat(value,frac);}
|
void WriteFloat(const F &value,const uint frac){csv->WriteFloat(value,frac);}
|
||||||
};//template<typename T> class CSVOutputStream
|
};//template<typename T> class CSVOutputStream
|
||||||
|
|
||||||
template<typename T> inline CSVOutputStream<T> *CreateCSVOutputToStream(io::OutputStream *os,io::TextOutputStream *tos,const uint field_count,const T fields_terminated_char=T(','),const T enclosed_char=T('"'))
|
template<typename T> inline CSVOutputStream<T> *CreateCSVOutputToStream(io::OutputStream *os,io::TextOutputStream *tos,const T fields_terminated_char=T(','),const T enclosed_char=T('"'))
|
||||||
{
|
{
|
||||||
CSVOutput<T> *csv=new CSVOutput<T>(tos,field_count,fields_terminated_char,enclosed_char);
|
CSVOutput<T> *csv=new CSVOutput<T>(tos,fields_terminated_char,enclosed_char);
|
||||||
|
|
||||||
return(new CSVOutputStream<T>(os,tos,csv));
|
return(new CSVOutputStream<T>(os,tos,csv));
|
||||||
}
|
}
|
||||||
|
|
||||||
CSVOutputStream<u8char> *CreateCSVOutputToUTF8File(const OSString &filename,const uint field_count,const u8char fields_terminated_char=U8_TEXT(','),const u8char enclosed_char=U8_TEXT('"'));
|
CSVOutputStream<u8char> *CreateCSVOutputToUTF8File(const OSString &filename,const u8char fields_terminated_char=U8_TEXT(','),const u8char enclosed_char=U8_TEXT('"'));
|
||||||
CSVOutputStream<u16char> *CreateCSVOutputToUTF16LEFile(const OSString &filename,const uint field_count,const u16char fields_terminated_char=U16_TEXT(','),const u16char enclosed_char=U16_TEXT('"'));
|
CSVOutputStream<u16char> *CreateCSVOutputToUTF16LEFile(const OSString &filename,const u16char fields_terminated_char=U16_TEXT(','),const u16char enclosed_char=U16_TEXT('"'));
|
||||||
}//namespace util
|
}//namespace util
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
|
@ -8,22 +8,22 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
namespace util
|
namespace util
|
||||||
{
|
{
|
||||||
CSVOutputStream<char> *CreateCSVOutputToUTF8File(const OSString &filename,const uint field_count,const u8char fields_terminated_char,const u8char enclosed_char)
|
CSVOutputStream<char> *CreateCSVOutputToUTF8File(const OSString &filename,const u8char fields_terminated_char,const u8char enclosed_char)
|
||||||
{
|
{
|
||||||
io::FileOutputStream *fos=io::CreateFileOutputStream(filename);
|
io::FileOutputStream *fos=io::CreateFileOutputStream(filename);
|
||||||
|
|
||||||
if(!fos)return(nullptr);
|
if(!fos)return(nullptr);
|
||||||
|
|
||||||
return CreateCSVOutputToStream<u8char>(fos,new io::UTF8TextOutputStream(fos),field_count,fields_terminated_char,enclosed_char);
|
return CreateCSVOutputToStream<u8char>(fos,new io::UTF8TextOutputStream(fos),fields_terminated_char,enclosed_char);
|
||||||
}
|
}
|
||||||
|
|
||||||
CSVOutputStream<u16char> *CreateCSVOutputToUTF16LEFile(const OSString &filename,const uint field_count,const u16char fields_terminated_char,const u16char enclosed_char)
|
CSVOutputStream<u16char> *CreateCSVOutputToUTF16LEFile(const OSString &filename,const u16char fields_terminated_char,const u16char enclosed_char)
|
||||||
{
|
{
|
||||||
io::FileOutputStream *fos=io::CreateFileOutputStream(filename);
|
io::FileOutputStream *fos=io::CreateFileOutputStream(filename);
|
||||||
|
|
||||||
if(!fos)return(nullptr);
|
if(!fos)return(nullptr);
|
||||||
|
|
||||||
return CreateCSVOutputToStream<u16char>(fos,new io::UTF16LETextOutputStream(fos),field_count,fields_terminated_char,enclosed_char);
|
return CreateCSVOutputToStream<u16char>(fos,new io::UTF16LETextOutputStream(fos),fields_terminated_char,enclosed_char);
|
||||||
}
|
}
|
||||||
}//namespace util
|
}//namespace util
|
||||||
}//namespace hgl
|
}//namespace hgl
|
||||||
|
Loading…
x
Reference in New Issue
Block a user