BOOL CCSV2Json::Parse()
{
BOOL bSuc = FALSE;
do {
if ( INVALID_HANDLE_VALUE == m_hFile ) {
break;
}
OVERLAPPED ov;
memset(&ov, 0, sizeof(OVERLAPPED));
BYTE lpBuffer[BUFFERSIZE] = {0};
DWORD dwHaveRead = 0;
std::string strSingle;
BOOL bFirstDoubleQuotes = FALSE; // 第一个字符是否为"
BOOL bBeforeIsDoubleQuotes = FALSE;
BOOL bBeforeIsX0D = FALSE;
ListString Liststr;
BOOL bPairDoubleQuotes = FALSE;
while ( ReadFile(m_hFile, lpBuffer, sizeof(lpBuffer), &dwHaveRead, &ov ) ) {
ov.Offset += dwHaveRead;
for ( DWORD dwIndex = 0; dwIndex < dwHaveRead; dwIndex++ ) {
BYTE& by = *(lpBuffer + dwIndex);
if ( bFirstDoubleQuotes ) {
// 有前置"
if ( IsDoubleQuotes(by) ) {
bBeforeIsX0D = FALSE;
if ( bBeforeIsDoubleQuotes ) {
strSingle.append(1, (char)(by));
bBeforeIsDoubleQuotes = FALSE;
}
else {
bBeforeIsDoubleQuotes = TRUE;
}
}
else {
if ( bBeforeIsDoubleQuotes ) {
bFirstDoubleQuotes = FALSE;
}
bBeforeIsDoubleQuotes = FALSE;
if ( IsCRLF( by ) ){
if ( bFirstDoubleQuotes ) {
strSingle.append(1, (char)(by));
}
else if (FALSE == bBeforeIsX0D) {
Liststr.push_back(strSingle);
m_Listliststr.push_back(Liststr);
Liststr.clear();
strSingle.clear();
bFirstDoubleQuotes = FALSE;
}
bBeforeIsX0D = IsX0D(by);
}
else if ( IsSep(by) ) {
bBeforeIsX0D = FALSE;
if ( bFirstDoubleQuotes ) {
strSingle.append(1, (char)(by));
}
else {
bBeforeIsX0D = FALSE;
Liststr.push_back(strSingle);
strSingle.clear();
}
}
else {
bBeforeIsX0D = FALSE;
strSingle.append(1, (char)(by));
}
}
}
else{
// 如果无前置"
if ( IsDoubleQuotes(by) ) {
bBeforeIsX0D = FALSE;
if ( strSingle.empty() ) {
// 空串,第一个是"
bFirstDoubleQuotes = TRUE;
bBeforeIsDoubleQuotes = FALSE;
}
else {
strSingle.append(1,(char)(by));
continue;
}
}
else {
bBeforeIsDoubleQuotes = FALSE;
if ( IsCRLF( by ) ){
if (FALSE == bBeforeIsX0D) {
Liststr.push_back(strSingle);
m_Listliststr.push_back(Liststr);
Liststr.clear();
strSingle.clear();
bFirstDoubleQuotes = FALSE;
bBeforeIsDoubleQuotes = FALSE;
}
else {
// 连续\r\n不考虑设置为新的行
}
bBeforeIsX0D = IsX0D(by);
}
else if ( IsSep(by) ) {
bBeforeIsX0D = FALSE;
Liststr.push_back(strSingle);
strSingle.clear();
}
else {
bBeforeIsX0D = FALSE;
strSingle.append(1, (char)(by));
}
}
}
}
memset(lpBuffer, 0, sizeof(lpBuffer));
}
if ( false == strSingle.empty() ) {
// while ( IsCRLF(strSingle.at(strSingle.length() - 1) ) && strSingle.length() > 0) {
// strSingle = strSingle.substr(0, strSingle.length() - 1 );
// }
Liststr.push_back(strSingle);
m_Listliststr.push_back(Liststr);
Liststr.clear();
strSingle.clear();
}
bSuc = TRUE;
} while (0);
if ( NULL != m_hFile ) {
CloseHandle(m_hFile);
m_hFile = NULL;
}
return bSuc;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有