Return Type | Function name | Arguments |
---|---|---|
hzEcode | SplitCSV | (hzArray<hzString>&,const char*,char,) |
Declared in file: hzTextproc.h
Defined in file : hzTextproc.cpp
Function Logic:
Function body:
hzEcode SplitCSV (hzArray<hzString>& ar, const char* line, char cDelim) { hzChain C ; const char* i ; hzString S ; ar.Clear() ; i = line ; if (!i || !i[0]) return E_ARGUMENT ; if (!cDelim || cDelim == CHAR_DQUOTE) cDelim = CHAR_COMMA ; for (;;) { if (*i == CHAR_DQUOTE) { for (i++ ; *i ; i++) { if (*i == CHAR_BKSLASH) { if (i[1]== ''r''){i++ ; C.AddByte(CHAR_CR) ; continue ; } if (i[1]== ''n''){i++ ; C.AddByte(CHAR_NL) ; continue ; } if (i[1]== ''t''){i++ ; C.AddByte(CHAR_TAB) ; continue ; } if (i[1]== ''"''){i++;C.AddByte(CHAR_DQUOTE);continue; } } if (i[0]== CHAR_DQUOTE && i[1]== CHAR_DQUOTE) { i++ ; C.AddByte(CHAR_DQUOTE) ; continue ; } if (*i == CHAR_DQUOTE) break ; C.AddByte(*i) ; } if (*i == CHAR_DQUOTE) i++ ; else break ; } if (*i == 0|| *i == cDelim) { S = C ; ar.Add(S) ; C.Clear() ; S.Clear() ; if (*i == 0) break ; i++ ; continue ; } if (*i == CHAR_BKSLASH) { if (i[1]== ''r''){i++ ; C.AddByte(CHAR_CR) ; continue ; } if (i[1]== ''n''){i++ ; C.AddByte(CHAR_NL) ; continue ; } if (i[1]== ''t''){i++ ; C.AddByte(CHAR_TAB) ; continue ; } if (i[1]== ''"''){i++;C.AddByte(CHAR_DQUOTE);continue; } } C.AddByte(*i) ; i++ ; } return E_OK ; }