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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM