2012-12-07 83 views
0

我有一個需求,我需要從下面顯示的csv文件中搜索產品條形碼。在C++中處理CSV文件

Sr. No.,Product Barcode,Product Description,Discount (%),Price Per Unit 
1,011001,TOILET PAPER,5,40 
2,011002,BATHING SOAP,0,27 
3,011003,MOISTURIZER,3,95 
4,011004,SHAMPOO,0,115 
5,011005,CONDITIONER,5,155 
6,011006,TISSUE,10,60 
7,011007,HAIR OIL,0,75 
8,011008,HAIR GEL,0,96 
9,011009,BODY LOTION,7,195 
10,011010,FACE WASH,0,85 

當用戶輸入條形碼時,它應該搜索csv文件,並應該提取單位價格以及折扣並生成帳單。這必須在C++中實現。在開發的後期階段,我還需要更新csv文件內容。例如,如果它有一個「數量」列,顯示特定產品的庫存情況,並且該產品已售出,我還需要更新csv字段數量。

請指導我如何搜索csv文件並選取字段。我搜索了網絡,但找不到滿意的答案。

我正在使用Bloodshed Dev C++。

+6

whathaveyoutried.com –

+0

這裏有很多關於如何標記字符串(文件的每一行)的例子:http://stackoverflow.com/questions/53849/how-do-i-tokenize-a-string- in-c 然後您只需在必要時將相關標記轉換爲整數。 – goji

+0

加載和搜索,很簡單。更新en'masse,一樣簡單。正在更新。相當多的工作。考慮前兩個的unordered_map。第三,儘可能避免它。 – WhozCraig

回答

0

我能夠提取輸入條形碼的產品價格並使用getline()生成賬單。

乾杯你的工作人員。

0

我會建議使用libpcre

你可以做這樣的事情 -

#include <iostream> 
#include <vector> 
#include <string> 
#include <pcre++.h> 

using namespace std; 
using namespace pcrepp; 

int main(int argc, char **argv) { 
    string pat = ","; 
    vector<string> v; 
    string s; 
    Pcre p(pat); 
    int ctr; 
    while(getline(cin, s)) { 
     v = p.split(s); 
     vector<string>::iterator i; 
     for(i=v.begin(),ctr=0;i!=v.end();i++,ctr++) { 
      if(ctr==2) { 
       cout << *i << endl; 
      } 
     } 
    } 
    return 0; 
} 

我同意這可能是矯枉過正用於提取第二支柱或n列,但我喜歡這種方法,因爲pcre爲您提供了很多自由,包括您希望從CSV文件中提取哪些文本。