gpt4 book ai didi

c++ - 尝试将整数解析为字符串 (qi::as_wstring)

转载 作者:太空狗 更新时间:2023-10-29 22:57:56 24 4
gpt4 key购买 nike

(免责声明,我正在学习提升精神)

我正在尝试解析这样的表达式:F( 1 )

并希望将 1 作为字符串(“1”而不是数字(与 qi::int_ 一起使用))。

我试过这样的事情(这是错误的,但也许我的方向是正确的),但结果字符串是“\x1”而不是“1” >"

关于将数字解析为字符串需要什么,有什么见解吗?

template <typename Iterator>
struct range_parser : boost::spirit::qi::grammar<Iterator, RangeResult(), iso8859_1::space_type>
{
range_parser() : range_parser::base_type(start)
{
using qi::lexeme;
using qi::int_;
using iso8859_1::digit;

number_as_string %= lexeme[ +(int_) ];

start %=
qi::lit("F")
>> '('
>> number_as_string
>> ")"
;
}

qi::rule<Iterator, std::wstring(), iso8859_1::space_type> number_as_string;
qi::rule<Iterator, RangeResult(), iso8859_1::space_type> start;
};

最佳答案

我想你是想写 +(digit)(一个或多个数字)而不是 +(int_)(一个或多个整数)。请注意,+(digit) 不会做与 qi::int_ 相同的事情(没有范围检查,没有 +/- 符号,没有位数限制,接受像 "000" 等输入)。

如果你想捕获 qi::int_ 识别的输入,你可以尝试使用 raw 指令:raw[int_] http://www.boost.org/doc/libs/1_63_0/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html

如有必要,可以同时保存qi::int_ 解析器的解析值和原始输入,参见此处:qi::rule with inherited attribute as inherited attribute

关于c++ - 尝试将整数解析为字符串 (qi::as_wstring),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42258463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com