
Hi, I have to parse the file, the contents of which(with a header) is below and stuff the double part only to std::vector<double>: "A","B","C","D" 1,2,3,4 5,6.7,8 ........ I started simple without header approach first : from libs/spirit/example/lex/example.hpp: inline std::string read_from_file(char const* infile) { std::ifstream instream(infile); if (!instream.is_open()) { std::cerr << "Couldn't open file: " << infile << std::endl; exit(-1); } instream.unsetf(std::ios::skipws); // No white space skipping! return std::string(std::istreambuf_iterator<char>(instream.rdbuf()), std::istreambuf_iterator<char>()); } from libs/spirit/classic/examples/number_list.hpp: /////////////////////////////////////////////////////////////////////////////// // // Our comma separated list parser // /////////////////////////////////////////////////////////////////////////////// bool parse_numbers(char const* str, vector<double>& v) { return parse(str, // Begin grammar ( real_p[push_back_a(v)] >> *(',' >> real_p[push_back_a(v)]) ) , // End grammar space_p).full; } int main() { std::string str = read_from_file("test.csv"); std::vector<double> v; if (parse_numbers(str.c_str(), v)) { cout << "-------------------------\n"; cout << "Parsing succeeded\n"; cout << str << " Parses OK: " << endl; for (vector<double>::size_type i = 0; i < v.size(); ++i) cout << i << ": " << v[i] << endl; cout << "-------------------------\n"; } else { cout << "-------------------------\n"; cout << "Parsing failed\n"; cout << "-------------------------\n"; } } But after running it, I am getting the result as "Parsing failed". I am going thru the doc to understand it better, but any quick spot will help me immensely. Thanks, Chandra