使用标准模版库的流处理CSV文件
由 gougou 于 星期日, 2005-06-19 00:04 发表
标准模版库中的文件流支持>>操作符号重载,可以方便的实现数据导入和类型转换,但是有一个比较弱智的限制就是输入的字符串只能用空格分割,不支持逗号分割,今天处理csv文件,用了一个比较龌龊的方法就是,将所有的逗号先替换为空格,然后导入,代码示意如下
ifstream fRoad(szFile.c_str()); if (!fRoad) throw e_open_file_fail; entities.clear(); char buffer[0xFF] = {0}; while (!fRoad.eof()) { fRoad.getline(buffer, sizeof(buffer)); string szLine=buffer; replace_if(szLine.begin(),szLine.end(), //range bind2nd(equal_to<char>(),','), ' '); istringstream ssLine(szLine); road_entity entity; ssLine >> entity; ..... istringstream& operator>>(istringstream& ss, road_entity& e) { string szStation; ss >> szStation;// ss >> e.m_sName; ss >> e.m_bCode; ss >> e.m_bStartLine; ss >> e.m_bEndLine; UINT bUp, bDown; ss >> bUp >> bDown; e.m_UpDown=(RoadUpDown)bDown; UINT bIn, bOut; ss >> bIn >> bOut; e.m_InOut=(RoadInOut)bOut; return ss; }