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

牽著老婆滿街逛

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

使用boost::spirit實(shí)現(xiàn)的CSV文件解析類

boost::spirit真是不錯(cuò)的說。。。。

#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 楊粼波 閱讀(3064) 評(píng)論(1)  編輯 收藏 引用

評(píng)論

# re: 使用boost::spirit實(shí)現(xiàn)的CSV文件解析類 2008-09-30 10:07 A0soft

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


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   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>
            欧美不卡激情三级在线观看| 欧美va天堂| 国产手机视频一区二区| 欧美天天视频| 国产精品99一区| 国产精品视频一二三| 国产人成一区二区三区影院| 韩国精品主播一区二区在线观看| 国产欧美日韩综合精品二区| 尤物yw午夜国产精品视频| 亚洲成人影音| 日韩一级黄色大片| 亚洲女ⅴideoshd黑人| 久久精品一区二区三区不卡牛牛| 免费在线欧美黄色| 99www免费人成精品| 亚洲欧美成aⅴ人在线观看| 久久久精品久久久久| 亚洲永久免费| 一区二区三区在线免费播放| 亚洲欧洲日产国产综合网| 中文国产亚洲喷潮| 久久福利资源站| 亚洲国产精品电影| 99热精品在线观看| 久久亚洲综合色| 国产精品video| 红桃视频成人| 亚洲图片欧美日产| 免费成人美女女| 亚洲视频在线观看一区| 久久久久综合一区二区三区| 欧美色综合天天久久综合精品| 狠狠88综合久久久久综合网| 在线午夜精品| 欧美91精品| 欧美一区二区视频97| 欧美视频在线一区| 亚洲伦理在线免费看| 久久久五月婷婷| 亚洲天堂av在线免费| 欧美韩日亚洲| 精品88久久久久88久久久| 亚洲欧美日韩国产综合| 亚洲人人精品| 欧美肥婆在线| 在线精品国精品国产尤物884a| 午夜精品久久久久99热蜜桃导演| 亚洲精品乱码久久久久久蜜桃91| 久久久久久亚洲精品不卡4k岛国| 国产精品久久久久7777婷婷| 日韩视频在线永久播放| 免费亚洲电影| 久久综合九色欧美综合狠狠| 狠狠色综合日日| 久久五月天婷婷| 久久久久久久综合日本| 在线日韩中文| 欧美成人激情视频| 久久精品系列| 亚洲成人直播| 欧美成人午夜| 久久综合九色综合网站| 亚洲国产女人aaa毛片在线| 免费亚洲一区| 欧美精品在线免费播放| 亚洲精品一区二区三区四区高清 | 国产日韩精品视频一区二区三区| 亚洲视屏一区| 亚洲一区二区高清| 国产精品一区毛片| 久久国产一二区| 久久精品国产清高在天天线| 极品日韩久久| 欧美国产日韩精品| 国产精品久久999| 欧美一级欧美一级在线播放| 一区二区三区免费看| 国产精品多人| 久久成人一区二区| 久久久青草婷婷精品综合日韩| 伊人色综合久久天天| 亚洲国产美国国产综合一区二区| 欧美成人午夜77777| 9色porny自拍视频一区二区| 夜夜爽夜夜爽精品视频| 国产欧美精品va在线观看| 久久综合成人精品亚洲另类欧美| 美女黄网久久| 亚洲一区视频在线| 久久黄色小说| 日韩亚洲国产精品| 亚洲欧美日韩国产综合精品二区| 韩国免费一区| 99亚洲伊人久久精品影院红桃| 国产日韩欧美高清| 亚洲黄色av一区| 国产九九精品| 亚洲国产一区二区a毛片| 国产精品vvv| 欧美激情精品久久久久久大尺度| 欧美日韩另类国产亚洲欧美一级| 欧美亚洲综合网| 蜜桃av一区二区三区| 亚洲在线免费观看| 久久综合综合久久综合| 亚洲免费中文| 欧美成人国产va精品日本一级| 亚洲欧美日韩在线不卡| 麻豆国产精品777777在线| 亚洲字幕一区二区| 欧美刺激性大交免费视频| 欧美主播一区二区三区| 欧美日韩妖精视频| 免费在线播放第一区高清av| 国产精品综合不卡av| 在线一区亚洲| 一区二区三区|亚洲午夜| 久久三级福利| 久久精品国产精品亚洲综合| 欧美性色视频在线| 亚洲三级免费电影| 最新国产の精品合集bt伙计| 久久国产精品72免费观看| 性欧美8khd高清极品| 欧美日韩中文在线| 亚洲精品免费在线播放| 亚洲精品乱码视频| 免费在线亚洲欧美| 毛片一区二区| 在线播放日韩专区| 久久亚洲色图| 欧美电影免费观看高清完整版| 国产主播精品在线| 欧美一区在线看| 久久婷婷国产综合尤物精品| 国产午夜精品在线观看| 亚洲欧美在线观看| 久久精品人人做人人综合| 国产欧美另类| 欧美中文字幕在线播放| 欧美国产在线观看| 一本大道久久a久久综合婷婷| 午夜精品久久久久久久男人的天堂 | 亚洲国产精品999| 伊人久久综合| 欧美成年网站| 亚洲欧洲精品成人久久奇米网| 亚洲国内精品在线| 欧美人妖在线观看| 一区二区成人精品| 亚洲欧美国产日韩中文字幕| 国产精品影音先锋| 香蕉久久精品日日躁夜夜躁| 亚洲小视频在线观看| 欧美色欧美亚洲高清在线视频| 中文在线资源观看网站视频免费不卡| 一本到高清视频免费精品| 欧美视频四区| 欧美亚洲一区三区| 久久一区二区三区国产精品| 韩国三级在线一区| 老司机免费视频一区二区| 亚洲国产精品成人综合色在线婷婷| 亚洲区第一页| 国产精品美女www爽爽爽| 久久精品国产亚洲精品| 欧美14一18处毛片| 亚洲精品国产精品乱码不99按摩| 欧美日韩国产在线播放网站| 亚洲一区成人| 免费欧美电影| 99国产精品私拍| 国产日韩成人精品| 久久久五月婷婷| 一区二区三区国产精品| 久久综合久久综合这里只有精品| 亚洲美女诱惑| 激情国产一区二区| 国产精品99免费看| 男人的天堂亚洲在线| 午夜精品久久99蜜桃的功能介绍| 欧美激情1区2区| 欧美中文字幕精品| 一卡二卡3卡四卡高清精品视频| 国产一区三区三区| 国产精品久久午夜| 欧美日本三区| 久久综合色播五月| 亚洲尤物视频网| 亚洲伦理在线免费看| 美女精品自拍一二三四| 欧美一级在线视频| 一区二区三区毛片| 亚洲欧洲日韩综合二区| 在线不卡a资源高清| 国产亚洲欧美另类中文| 国产精品福利影院| 欧美日韩国产一区二区三区| 欧美va亚洲va香蕉在线|