Humaneer
2014년 12월 26일 금요일
simple csv parser
내가 살짝 수정함. 근데 먼가 버그스러운 것이 있음. -_-;
std::vector
csv_read_row(std::string &line, char delimiter) { std::istringstream ss(line); return csv_read_row(ss, delimiter); } std::vector
csv_read_row(std::istream &in, char delimiter) { std::stringstream ss; bool inquotes = false; std::vector
row;//relying on RVO while(in.good()) { char c = in.get(); if (!inquotes && c=='"') //beginquotechar { inquotes=true; } else if (inquotes && c=='"') //quotechar { if ( in.peek() == '"')//2 consecutive quotes resolve to 1 { ss << (char)in.get(); } else //endquotechar { inquotes=false; } } else if (!inquotes && c==delimiter) //end of field { row.push_back( ss.str() ); ss.str(""); } else if (!inquotes && (c=='\r' || c=='\n') ) { if(in.peek()=='\n') { in.get(); } row.push_back( ss.str() ); return row; } else if (c == static_cast
(0xff)) { // 이상하게 c에 0xff가 들어가있는 경우가 발생함. 제일 마지막에... row.push_back( ss.str() ); return row; } else { ss << c; } } }
댓글 없음:
댓글 쓰기
최근 게시물
이전 게시물
홈
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기