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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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 楊粼波 閱讀(3064) 評論(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>
            亚洲精品欧美日韩专区| 亚洲午夜羞羞片| 欧美日韩免费高清| 欧美国产激情二区三区| 欧美暴力喷水在线| 国产精品高潮呻吟| 国产日韩欧美精品在线| 国产自产精品| 亚洲精品久久在线| 亚洲一区二区三区成人在线视频精品| 亚洲视频在线播放| 久久riav二区三区| 亚洲视屏一区| 亚洲青色在线| 在线观看成人小视频| 亚洲国产精品久久久久秋霞影院| 亚洲日本免费| 欧美在线播放视频| 欧美激情中文字幕一区二区| 一片黄亚洲嫩模| 久久久久在线观看| 欧美视频免费| 亚洲国产精品视频| 久久gogo国模裸体人体| 亚洲韩国日本中文字幕| 亚洲午夜在线观看| 欧美成人午夜激情视频| 国产乱码精品一区二区三区五月婷 | 欧美一区精品| 欧美国产精品专区| 国产欧美精品xxxx另类| 一本久道久久久| 久久中文字幕导航| 亚洲一区二区高清视频| 欧美77777| 精品成人免费| 欧美一二区视频| 91久久午夜| 久热精品视频在线| 国内精品久久久| 亚洲欧美亚洲| 日韩视频在线观看免费| 久久综合一区二区三区| 国产午夜精品久久久| 亚洲午夜激情网站| 亚洲国产99精品国自产| 久久国产精品久久久久久| 国产精品爱久久久久久久| 亚洲三级视频在线观看| 欧美mv日韩mv国产网站| 午夜一区二区三视频在线观看 | 嫩草成人www欧美| 性欧美xxxx视频在线观看| 欧美深夜福利| 在线性视频日韩欧美| 最近看过的日韩成人| 老司机久久99久久精品播放免费 | 狠狠色狠狠色综合日日五| 欧美在线观看视频在线| 亚洲欧美日韩国产中文在线| 国产精品久久久一区二区| 国产精品分类| 国产精品v亚洲精品v日韩精品| 亚洲日本成人| 91久久久久久国产精品| 欧美激情bt| 一区二区高清视频在线观看| 亚洲理伦在线| 国产精品丝袜xxxxxxx| 欧美一区二区三区喷汁尤物| 午夜精品视频一区| 一区在线免费观看| 欧美高清在线一区二区| 欧美风情在线| 亚洲视频综合在线| 亚洲欧美日韩精品久久亚洲区| 国产欧美在线观看| 你懂的成人av| 欧美三级在线| 久久久999成人| 免费在线观看精品| 亚洲一区在线观看视频| 亚洲欧美日韩专区| 在线看无码的免费网站| 亚洲精品久久久蜜桃| 国产精品日韩一区二区三区| 久久久噜噜噜久久久| 欧美1区2区3区| 亚洲欧美一区二区三区久久| 欧美主播一区二区三区美女 久久精品人 | 亚洲精品久久嫩草网站秘色| 国产精品久久77777| 久久一区中文字幕| 欧美日韩精品三区| 美女福利精品视频| 国产精品久久国产精麻豆99网站| 久久全球大尺度高清视频| 欧美福利视频在线观看| 亚洲欧美一区二区三区极速播放| 久久人人爽人人爽爽久久| 一区二区欧美亚洲| 久久男女视频| 欧美伊人久久| 欧美日韩国产美女| 欧美高清你懂得| 国产亚洲精品v| 一本久久a久久精品亚洲| 亚洲国产成人porn| 久久动漫亚洲| 欧美在线视频网站| 欧美日韩美女在线| 亚洲国产人成综合网站| 国模大胆一区二区三区| 亚洲午夜伦理| 亚洲一卡久久| 欧美激情在线播放| 欧美黄色网络| 亚洲高清资源综合久久精品| 欧美在线你懂的| 午夜久久一区| 国内精品久久久| 欧美aaaaaaaa牛牛影院| 欧美精品一区二区久久婷婷| 亚洲欧美日韩国产成人| 欧美国产精品v| 欧美成人午夜77777| 国产视频久久久久| 亚洲一区三区电影在线观看| 9国产精品视频| 欧美国产精品一区| 亚洲福利视频二区| 亚洲国产成人久久综合| 久久伊人免费视频| 美国十次成人| 在线高清一区| 久久久久久国产精品一区| 久久久国际精品| 国产视频观看一区| 欧美伊人久久| 免费在线亚洲欧美| 亚洲国产精品久久久久| 久久婷婷麻豆| 欧美激情一区二区三区全黄| 最新成人av在线| 欧美精品久久99| 亚洲日本理论电影| 国产精品99久久久久久有的能看 | 久久久噜噜噜久久久| 久久亚洲视频| 亚洲国产天堂久久国产91| 欧美激情亚洲视频| 亚洲素人在线| 久久亚洲精选| 亚洲三级网站| 国产精品视频第一区| 久久精品国产精品亚洲精品| 亚洲电影视频在线| 制服丝袜激情欧洲亚洲| 国产精品视频你懂的| 久久久久久69| 99re66热这里只有精品3直播| 性色av一区二区三区红粉影视| 国内精品免费在线观看| 欧美福利精品| 午夜精品福利在线| 亚洲成色www8888| 亚洲女同在线| 亚洲激情成人| 国产欧美日韩精品一区| 麻豆精品在线视频| 宅男在线国产精品| 欧美fxxxxxx另类| 亚洲欧美另类国产| 亚洲第一黄网| 国产精品午夜av在线| 欧美ed2k| 久久激情视频久久| 亚洲性感美女99在线| 欧美国产第一页| 久久精品国产亚洲一区二区三区| 亚洲精品综合| 伊人久久男人天堂| 国产精品免费看片| 欧美搞黄网站| 欧美在线观看一区二区三区| 99热在线精品观看| 亚洲欧美日韩精品综合在线观看| 性欧美xxxx大乳国产app| 亚洲人成在线影院| 影音先锋另类| 国产精品一区免费观看| 欧美连裤袜在线视频| 久久伊人亚洲| 欧美一区国产二区| 亚洲视频网在线直播| 91久久国产自产拍夜夜嗨| 老司机午夜精品视频| 久久精品成人| 久久xxxx精品视频| 欧美一区国产在线|