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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            一区二区在线观看视频| 欧美黄色视屏| 欧美激情精品| 久久婷婷国产综合精品青草| 欧美激情一区二区三区在线视频观看| 久久不射中文字幕| 国产精品第13页| 亚洲国产精品国自产拍av秋霞 | 欧美日韩在线视频一区| 久久五月激情| 国产精品视频免费在线观看| 亚洲国产精品尤物yw在线观看 | 国产精品视频在线观看| 亚洲日本成人网| 亚洲国内高清视频| 久久久91精品国产一区二区三区 | 国产精品久久久久久久9999| 亚洲国产精品一区二区第四页av | 国内精品美女av在线播放| 亚洲最快最全在线视频| 99精品99久久久久久宅男| 免费不卡在线观看av| 每日更新成人在线视频| 国产综合18久久久久久| 欧美在线一二三四区| 久久99伊人| 国产女主播一区二区| 亚洲欧美日韩国产| 欧美在线|欧美| 国产亚洲精品高潮| 久久成年人视频| 麻豆精品视频| 亚洲日本激情| 欧美精品一区二区三| 亚洲精品1区2区| 亚洲视频一区二区在线观看| 欧美视频三区在线播放| 99国产精品久久久| 亚洲一区免费看| 国产伦精品免费视频| 性欧美暴力猛交另类hd| 久久一区中文字幕| 亚洲高清免费| 欧美高清视频www夜色资源网| 亚洲激情综合| 亚洲欧美日韩在线观看a三区| 国产精品亚洲аv天堂网| 欧美一级电影久久| 免费看成人av| 一区二区高清| 国产日韩精品一区二区三区 | 国产视频一区欧美| 久久精选视频| 最新国产拍偷乱拍精品| 亚洲一区二区三区高清不卡| 国产精品有限公司| 蜜桃av噜噜一区| 日韩一级片网址| 久久婷婷久久一区二区三区| 亚洲人精品午夜在线观看| 国产精品v欧美精品v日本精品动漫| 亚洲欧美伊人| 亚洲欧洲精品一区二区三区波多野1战4 | 久久嫩草精品久久久精品一| 亚洲欧洲精品一区二区三区| 欧美一区三区二区在线观看| 亚洲第一精品夜夜躁人人躁 | 国产精品视频1区| 久久久久综合网| 正在播放亚洲一区| 欧美sm视频| 欧美一级日韩一级| 日韩亚洲欧美一区| 好看不卡的中文字幕| 欧美体内谢she精2性欧美| 欧美综合二区| 亚洲午夜视频在线观看| 欧美jizz19hd性欧美| 欧美一区二区视频在线观看| 最新中文字幕亚洲| 国产一区二区三区日韩欧美| 欧美午夜精品久久久久免费视| 巨乳诱惑日韩免费av| 午夜久久黄色| 一区二区三区免费看| 亚洲大片在线观看| 久久久五月天| 欧美一区二区视频在线观看2020 | 亚洲综合色婷婷| 亚洲美女中文字幕| 18成人免费观看视频| 国产精品区一区二区三| 欧美日本国产在线| 蜜臀av一级做a爰片久久| 久久精品91| 午夜精品久久久久影视| 中日韩高清电影网| 亚洲黄色在线观看| 欧美激情一区二区三区全黄| 玖玖玖国产精品| 久久久精品日韩欧美| 欧美在线播放一区二区| 午夜精品久久久久久久久久久| 中文av一区二区| 99精品久久久| 99视频精品| 亚洲婷婷综合久久一本伊一区| 亚洲国产婷婷综合在线精品 | 欧美黄网免费在线观看| 老司机免费视频久久| 美国十次了思思久久精品导航| 久久激情综合网| 久久高清免费观看| 久久精品九九| 毛片基地黄久久久久久天堂| 老司机精品福利视频| 欧美不卡激情三级在线观看| 欧美成在线视频| 亚洲高清激情| 亚洲精品日韩激情在线电影| 亚洲精品护士| 一本色道综合亚洲| 亚洲自拍电影| 久久国产精品网站| 老色鬼精品视频在线观看播放| 欧美 日韩 国产精品免费观看| 欧美激情第二页| 欧美日韩一区二区欧美激情| 国产精品毛片| 狠狠做深爱婷婷久久综合一区| 亚洲国产精品成人综合| 中日韩美女免费视频网址在线观看 | 香蕉久久夜色| 噜噜噜噜噜久久久久久91| 男人的天堂亚洲在线| 亚洲精品国产精品国产自| av成人激情| 久久av一区二区三区漫画| 裸体一区二区三区| 欧美日韩综合精品| 国产亚洲精品一区二555| 亚洲第一色中文字幕| 中文欧美字幕免费| 久久久久久高潮国产精品视| 欧美激情国产日韩| 亚洲一线二线三线久久久| 久久天天躁夜夜躁狠狠躁2022| 欧美另类专区| 国自产拍偷拍福利精品免费一| 亚洲精品免费在线观看| 欧美一区二区三区精品| 欧美成人精精品一区二区频| 在线视频亚洲一区| 久久频这里精品99香蕉| 国产精品国产精品| 在线播放视频一区| 亚洲欧美亚洲| 亚洲高清在线视频| 亚洲欧美日韩综合国产aⅴ| 欧美xart系列高清| 国产真实乱偷精品视频免| 夜夜爽99久久国产综合精品女不卡| 久久国产精品色婷婷| 亚洲精品免费在线| 久久久久久久一区二区| 国产精品国内视频| 亚洲欧洲日产国产网站| 欧美在线日韩精品| 9色国产精品| 免费观看成人网| 国内精品模特av私拍在线观看| 亚洲一区视频| 日韩视频免费看| 免费日韩成人| 亚洲国产精品成人精品| 欧美主播一区二区三区美女 久久精品人| 亚洲国产一区二区三区高清| 久久激情久久| 国产日韩在线亚洲字幕中文| 亚洲午夜久久久久久久久电影院| 欧美激情国产精品| 久久久久久高潮国产精品视| 国产日韩一区二区三区在线播放| 亚洲深爱激情| 亚洲六月丁香色婷婷综合久久| 老司机精品视频一区二区三区| 极品av少妇一区二区| 久久国产精彩视频| 亚洲欧美日韩综合| 国产精品自拍一区| 午夜天堂精品久久久久| 一区二区三区精品国产| 欧美特黄一级大片| 亚洲午夜在线视频| 9l国产精品久久久久麻豆| 欧美午夜视频网站| 亚洲在线免费观看| 亚洲一区二区三区高清| 国产精品日韩一区二区| 欧美在线一级视频|