c++解析csv文件

 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 }

 

更多内容请访问 www.uusystem.com

转载于:https://www.cnblogs.com/tianjifa/p/10443113.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值