|
1 | 1 | #include <csv_iterator.hpp>
|
| 2 | +#include <iostream> |
2 | 3 | #include <fstream>
|
3 | 4 | #include <boost/tuple/tuple.hpp>
|
4 | 5 |
|
| 6 | +// Compressed streams |
| 7 | +#include <boost/iostreams/filtering_stream.hpp> |
| 8 | +#include <boost/iostreams/filter/bzip2.hpp> |
| 9 | + |
5 | 10 | int main(int argc, const char *argv[])
|
6 | 11 | {
|
7 | 12 | // Example of csv_iterator usage
|
8 |
| - if(argc != 2){ |
9 |
| - std::cerr << "Usage ./csvItExample <file.csv>" << std::endl; |
10 |
| - return 1; |
11 |
| - } |
12 |
| - |
13 |
| - std::ifstream in(argv[1]); |
14 | 13 | using namespace boost::tuples;
|
15 | 14 | typedef tuple<int,std::string,double> record;
|
16 |
| - csv::iterator<record> it(in); |
17 | 15 |
|
18 |
| - double acc = 0.0; |
| 16 | + std::ifstream in; |
| 17 | + boost::iostreams::filtering_istream bzs; |
| 18 | + csv::iterator<record> it; |
| 19 | + |
| 20 | + if (argc == 2){ |
| 21 | + in.open(argv[1],std::ifstream::in); |
| 22 | + it=csv::iterator<record>(in); |
| 23 | + } else if (argc == 3) { |
| 24 | + in.open(argv[2], std::ios_base::in | std::ios_base::binary); |
| 25 | + bzs.push(boost::iostreams::bzip2_decompressor()); |
| 26 | + bzs.push(in); |
| 27 | + it=csv::iterator<record>(bzs); |
| 28 | + } |
| 29 | + else{ |
| 30 | + std::cerr << "Usage ./csvItExample [-BZIP] <file.csv>" << std::endl; |
| 31 | + return 1; |
| 32 | + } |
| 33 | + |
| 34 | + unsigned long long acc = 0; |
19 | 35 | std::for_each(it,csv::iterator<record>(),
|
20 |
| - [&acc](const record& rec){ |
21 |
| - acc += rec.get<0>(); |
22 |
| - }); |
| 36 | + [&acc](const record& rec){ |
| 37 | + acc += rec.get<0>(); |
| 38 | + }); |
23 | 39 |
|
24 | 40 | std::cout << acc << std::endl;
|
25 |
| - |
| 41 | + |
26 | 42 | return 0;
|
27 | 43 | }
|
0 commit comments