// Copyright (c) 2001-2011 Hartmut Kaiser // Copyright (c) 2011 Michael Caisse // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include namespace qi = boost::spirit::qi; template struct german_real_policies : qi::real_policies { template static bool parse_dot(Iterator& first, Iterator const& last) { if (first == last || *first != ',') return false; ++first; return true; } }; qi::real_parser > const german_double; /////////////////////////////////////////////////////////////////////////////// int main() { std::string input("123,456"); std::string::iterator begin = input.begin(); std::string::iterator end = input.end(); double value = 0; if (!qi::parse(begin, end, german_double, value)) { std::cout << "-------------------------------- \n"; std::cout << "Parsing failed\n"; std::cout << "-------------------------------- \n"; } else { std::cout << "-------------------------------- \n"; std::cout << "Parsing succeeded, got: " << value << "\n"; std::cout << "---------------------------------\n"; } return 0; }