青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

使用boost::spirit實現的CSV文件解析類

boost::spirit真是不錯的說。。。。

#include <iostream>
#include 
<iterator>
#include 
<vector>
#include 
<string>

#include 
<boost/spirit/core.hpp>
#include 
<boost/spirit/iterator/file_iterator.hpp>

using namespace std;
using namespace boost::spirit;

template
<typename IteratorT>
struct LineInfo 
{
    IteratorT lineIter;
    size_t lineNum;

    LineInfo( IteratorT beg ) : lineIter(beg), lineNum(
1{ }
}
;

template
<typename IteratorT>
struct NewLine
{
    LineInfo
<IteratorT>& lineInfo;
    NewLine( LineInfo
<IteratorT>& info ) : lineInfo(info) { }

    
void operator()(IteratorT first, IteratorT last) const
    
{
        lineInfo.lineIter 
= last;
        lineInfo.lineNum
++;
    }

}
;

struct AddVal
{
    vector
<string>& values;
    AddVal( vector
<string>& vec ) : values(vec) { }

    template
<class IteratorT>
    
void operator()(IteratorT first, IteratorT last) const
    
{
#ifdef _MSC_VER
        
string s;
        s.resize(distance(first, last));
        
for (size_t i = 0; first != last; ++i) 
        
{
            s[i] 
= *first++;
        }

#else
        
string s( first, last );
#endif
        
string::size_type pos = 0;
        
while (1)
        
{
            pos 
= s.find("\"\"", pos);
            
if (pos == string::npos)
                
break;
            
++pos;
            s.erase(pos, 
1);
        }

        values.push_back(s);
    }

}
;

template
<class IteratorT>
struct CSVParser : public grammar<CSVParser<IteratorT> >
{
    vector
<string>& v;
    LineInfo
<IteratorT>& lineInfo;

    CSVParser( vector
<string>& vec, LineInfo<IteratorT>& info ) : v(vec), lineInfo(info) { }

    template 
<typename ScannerT>
    
struct definition 
    
{
        rule
<ScannerT> csv, val, quoted_val, naked_val;

        definition(
const CSVParser<IteratorT>& self)
        
{
            csv 
= val >> *(',' >> val) >>
                (eol_p[NewLine
<IteratorT>(self.lineInfo)] | end_p);

            val 
= *blank_p >>
                ch_p(
'\"'>> quoted_val[AddVal(self.v)] >> ch_p('\"'>>
                
*blank_p
                
| naked_val[AddVal(self.v)];

            quoted_val 
= *(eol_p[NewLine<IteratorT>(self.lineInfo)]
            
| ~ch_p('"'| str_p("\"\""));

            naked_val 
= *(~ch_p(','& ~ch_p('\"'& ~ch_p('\n'));
        }


        
const rule<ScannerT>& start() const return csv; }
    }
;
}
;

template
<typename IteratorT>
parse_info
<IteratorT>
parse_csv( 
const IteratorT& first, const IteratorT& last,
          vector
<string>& vec, LineInfo<IteratorT>& info )
{
    CSVParser
<IteratorT> csv(vec, info);

    
return parse(first, last, csv);
}


int main( int argc, char** argv)
{
    
if (argc != 2return 1;

    typedef file_iterator
<char> iterator_t;

    iterator_t begin(argv[
1]);
    
if (!begin)
    
{
        cout 
<< "Unable to open file: " << argv[1<< endl;
        
return -1;
    }


    iterator_t first 
= begin;

    iterator_t last 
= first.make_end();

    LineInfo
<iterator_t> line_info( begin );
    
while ( first != last )
    
{
        vector
<string> v;
        parse_info
<iterator_t> info = parse_csv( first, last, v, line_info );

        
if (!info.hit)
        
{
            cout 
<< "Error!!  Line: " << line_info.lineNum
                
<< ", Column: " << distance(line_info.lineIter, info.stop)+1 << endl;
            
break;
        }


        cout 
<< "Parses OK:" << endl;
        
for (vector<string>::size_type i = 0; i < v.size(); ++i)
            cout 
<< i+1 << "" << v[i] << endl;

        cout 
<< "-------------------------\n";

        first 
= info.stop;
    }


    
return 0;
}

posted on 2008-06-03 22:55 楊粼波 閱讀(3068) 評論(1)  編輯 收藏 引用

評論

# re: 使用boost::spirit實現的CSV文件解析類 2008-09-30 10:07 A0soft

顯然作者的功底不錯。雖然在VC++6下面編譯通不過,但是在VC++8(VS2005)下面非常順利,連一個警告都沒有。
命令行里的指出的文件好像只能排他打開。  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久免费a∨大胸| 一本色道久久综合亚洲精品不卡 | 一区福利视频| 亚洲欧洲日产国产网站| 国产精品视频免费观看www| 欧美激情在线有限公司| 一区视频在线看| 亚洲一区在线看| 99视频精品全国免费| 久久综合九色| 久久久精品视频成人| 国产精品国产三级国产aⅴ9色 | 久久久久久网站| 国产精品视频99| 在线一区亚洲| 亚洲影院免费观看| 欧美日韩黄色一区二区| 亚洲国产精品成人| 亚洲经典自拍| 久久嫩草精品久久久精品| 久久免费视频在线观看| 国产日韩精品在线| 欧美伊久线香蕉线新在线| 午夜精品久久久| 国产精品入口麻豆原神| 亚洲一区三区视频在线观看| 亚洲一区二区三区中文字幕在线| 欧美日韩免费观看一区三区| 亚洲精品久久久久久下一站| 日韩一级黄色大片| 欧美日本不卡高清| 一本色道久久综合亚洲二区三区| 亚洲深夜激情| 国产精品theporn| 亚洲新中文字幕| 欧美在线免费视频| 国产一区二区三区在线观看精品 | 久久青草欧美一区二区三区| 国产一区自拍视频| 久久九九国产| 欧美成人午夜激情视频| 亚洲茄子视频| 欧美午夜不卡在线观看免费 | 亚洲伦理久久| 亚洲网站在线观看| 国产欧美日本在线| 久久人人97超碰国产公开结果| 欧美大片免费看| 99伊人成综合| 国产精品婷婷| 六月丁香综合| 999亚洲国产精| 久久精品99国产精品酒店日本| 精品成人一区二区三区| 欧美成人四级电影| 亚洲一线二线三线久久久| 久久久久久穴| 99热免费精品在线观看| 国产婷婷成人久久av免费高清 | 国产精品成人在线观看| 亚洲欧美第一页| 欧美成人精品在线播放| 亚洲午夜高清视频| 狠久久av成人天堂| 欧美美女视频| 欧美怡红院视频| 亚洲精品欧美极品| 久久久久国产一区二区三区四区| 最新69国产成人精品视频免费| 国产精品成人一区二区网站软件| 久久久精品国产99久久精品芒果| 亚洲人成在线观看| 久久亚洲国产精品一区二区| 一区二区三区回区在观看免费视频 | 欧美一二三区在线观看| 91久久香蕉国产日韩欧美9色| 欧美一区二区三区免费观看| 亚洲精品系列| 国内精品久久久久影院优| 欧美日韩国产首页| 久久亚洲欧美| 午夜精品久久久久影视| 亚洲黄色成人| 免费h精品视频在线播放| 午夜欧美不卡精品aaaaa| 亚洲日本国产| 一区一区视频| 国产欧美91| 国产精品豆花视频| 欧美精品www| 理论片一区二区在线| 欧美在线视频全部完| 亚洲视频1区| 99国产精品视频免费观看| 欧美成人高清视频| 久久久国产精品一区二区中文| 在线一区二区日韩| 亚洲精品中文字幕在线观看| 尤物精品国产第一福利三区| 国产一区视频网站| 国产乱码精品一区二区三区五月婷 | 国产日韩欧美黄色| 国产农村妇女精品一区二区| 欧美性大战xxxxx久久久| 欧美日韩三级电影在线| 欧美区日韩区| 欧美精品一区在线发布| 裸体女人亚洲精品一区| 久久综合九色综合久99| 久久久视频精品| 久久久蜜桃一区二区人| 久久视频精品在线| 可以免费看不卡的av网站| 久久综合伊人77777尤物| 久久亚洲图片| 欧美韩日一区二区| 欧美日韩国产一区| 国产精品国产三级国产aⅴ入口| 欧美激情精品久久久久久久变态| 你懂的成人av| 欧美理论电影在线播放| 欧美日韩精品福利| 欧美色欧美亚洲另类七区| 国产精品v欧美精品v日韩精品| 国产精品久久福利| 国产日韩欧美在线观看| 红桃视频欧美| 亚洲另类自拍| 亚洲在线中文字幕| 久久久www成人免费毛片麻豆| 美女任你摸久久| 亚洲激情另类| 亚洲无吗在线| 久久在线免费观看| 欧美精品一区三区在线观看| 国产精品美腿一区在线看 | 美腿丝袜亚洲色图| 亚洲精品国产欧美| 亚洲欧美日本另类| 久久尤物电影视频在线观看| 欧美精品123区| 国产麻豆综合| 亚洲国产激情| 亚洲综合欧美| 老司机午夜精品视频| 日韩视频久久| 欧美一区二区三区视频免费| 免费观看欧美在线视频的网站| 欧美区国产区| 狠狠色综合播放一区二区| 99精品国产在热久久婷婷| 欧美一区二区三区视频在线观看| 欧美+亚洲+精品+三区| 99精品国产在热久久| 久久伊人免费视频| 国产精品久久久久久久浪潮网站| 一色屋精品亚洲香蕉网站| 一区二区免费在线观看| 久久先锋资源| 99视频一区| 猛干欧美女孩| 国产亚洲第一区| 中文在线资源观看视频网站免费不卡| 久久女同互慰一区二区三区| 9久re热视频在线精品| 久久亚洲精品一区| 国产午夜精品麻豆| 亚洲一区在线视频| 亚洲国产免费| 久久久久久精| 国产免费亚洲高清| 亚洲图片激情小说| 欧美成人亚洲成人| 欧美在线观看视频一区二区| 欧美三级在线视频| 亚洲理论在线观看| 欧美波霸影院| 久久精品人人爽| 国产欧美一区二区三区在线看蜜臀| 亚洲人成网站在线观看播放| 另类av一区二区| 亚洲欧美日韩视频一区| 国产精品成人观看视频免费| 日韩视频在线观看国产| 欧美激情一区二区三区全黄| 久久久精品国产免费观看同学| 国产一区二区按摩在线观看| 欧美一区二区视频97| 亚洲一区区二区| 国产精品久久久久91| 99日韩精品| 亚洲久久视频| 欧美精品自拍偷拍动漫精品| 最新亚洲视频| 欧美韩日视频| 欧美激情欧美狂野欧美精品| 日韩午夜激情av| 亚洲精品国精品久久99热一| 欧美激情一区二区三级高清视频| 极品少妇一区二区三区|