首页 > 编程语言 > 详细

c++解析csv文件

时间:2019-02-27 13:36:40      阅读:160      评论:0      收藏:0      [点我收藏+]
 1 /***
 2 *        解析csv文件
 3 */
 4 BOOL ParseCSVFile(string fileName)
 5 {
 6     //文件名错误
 7     vector<string> fields; //声明一个字符串向量
 8     string field;
 9     SplitString(fileName.c_str,fields,".");
10     if (fields.size() < 2 || fields[fields.size()-1] != "csv")
11     {
12         //"文件格式错误";
13     }
14 
15     ifstream fin(fileName); //打开文件流操作
16     string line; 
17     int lineCount = 0;
18     while (getline(fin, line))   //整行读取,换行符“\n”区分,遇到文件尾标志eof终止读取
19     {
20         vector<string> fields; //声明一个字符串向量
21         string field;
22         SplitString(line,fields,",");
23         if (fields.size() != 7)
24         {
25             continue;
26         }
27         string loginName = Trim(fields[0]); //用户登录名
28         string userName = Trim(fields[1]); //用户名称
29         string cardId = Trim(fields[2]); //身份证号
30         string sex = Trim(fields[3]);    //性别
31         string ustatus = Trim(fields[4]); //状态
32         string invalidTime = TimeToDbTime(Trim(fields[5])); //到期时间
33         string department = Trim(fields[6]); //所属部分信息
34         if (lineCount == 0)
35         {
36             lineCount++;
37             continue;
38         }
39 
40         lineCount++;
41         
42         //具体处理方法。。。
43     }
44     
45     return TRUE;
46 }
47 
48 /***
49 *        按指定字符截取字符串
50 */
51 void SplitString(const string& str, vector<string>& ret_, const string &sep)
52 {
53     if (str.empty())
54     {
55         return ;
56     }
57 
58     string tmp;
59     string::size_type pos_begin = 0;//str.find_first_not_of(sep);
60     string::size_type comma_pos = 0;
61 
62     while (pos_begin != string::npos)
63     {
64         comma_pos = str.find(sep, pos_begin);
65         if (comma_pos != string::npos)
66         {
67             tmp = str.substr(pos_begin, comma_pos - pos_begin);
68             pos_begin = comma_pos + sep.length();
69         }
70         else
71         {
72             tmp = str.substr(pos_begin);
73             pos_begin = comma_pos;
74         }
75 
76         ret_.push_back(tmp);
77     }
78 }
79 
80 /***
81 *        删除字符串中空格,制表符tab等无效字符
82 */
83 string Trim(string& str)
84 {
85     str.erase(0,str.find_first_not_of(" \t\r\n"));
86     str.erase(str.find_last_not_of(" \t\r\n") + 1);
87     return str;
88 }

 

c++解析csv文件

原文:https://www.cnblogs.com/tianjifa/p/10443113.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!