数値パーサ
数値型に応じた組み込み型のパーサが用意されています。(namespace qi = boost::spirit::qi)
| 数値型(属性) | ルール |
|---|---|
| short | qi::short_ |
| unsigned short | qi::ushort_ |
| int | qi::int_ |
| unsigned int | qi::uint_ |
| long | qi::long_ |
| unsigned long | qi::ulong_ |
| long long | qi::long_long |
| unsigned long long | qi::ulong_long |
| float | qi::float_ |
| double | qi::double_ |
| long double | qi::long_double |
doubleの値を読み込む
c++:double 例
#include <boost/spirit/include/qi.hpp>
#include <iostream>
#include <iomanip>
#include <string>
namespace qi = boost::spirit::qi;
int main() {
std::string input = "8e5";
double n;
qi::parse( input.begin(), input.end(), qi::double_, n );
std::cout << std::fixed << n << std::endl;
return 0;
}
floatの値を読み込む
c++:float 例
#include <boost/spirit/include/qi.hpp>
#include <iostream>
#include <string>
namespace qi = boost::spirit::qi;
int main() {
std::string input = "3.14125";
float n;
qi::parse( input.begin(), input.end(), qi::float_, n );
std::cout << n << std::endl;
return 0;
}
unsigned shortの値を読み込む
c++:unsigned short 例
#include <boost/spirit/include/qi.hpp>
#include <iostream>
#include <string>
namespace qi = boost::spirit::qi;
int main() {
std::string input = "256";
unsigned short n;
qi::parse( input.begin(), input.end(), qi::ushort_, n );
std::cout << n << std::endl;
return 0;
}