• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++解析csv文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 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 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++中的动态绑定发布时间:2022-07-18
下一篇:
C#编程之重写ToString方法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap