4
問題問:Spirit-general list解碼焦炭UTF8在加速逃逸精神
您好所有,
我不知道如果我的主題是正確的,但testcode可能會顯示 我想要什麼實現。
我試圖解析之類的東西:
- '%40' 改爲 '@'
- '%3C' 到 '<'
下面我有一個最小的測試用例。我不明白爲什麼 這不起作用。這可能是我犯了一個錯誤,但我沒有看到它。
使用: 編譯器:GCC 4.6 升壓:當前軀幹
我使用下面的編譯行:
g++ -o main -L/usr/src/boost-trunk/stage/lib -I/usr/src/boost-trunk -g -Werror -Wall -std=c++0x -DBOOST_SPIRIT_USE_PHOENIX_V3 main.cpp
#include <iostream>
#include <string>
#define BOOST_SPIRIT_UNICODE
#include <boost/cstdint.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/phoenix/phoenix.hpp>
typedef boost::uint32_t uchar; // Unicode codepoint
namespace qi = boost::spirit::qi;
int main(int argc, char **argv) {
// Input
std::string input = "%3C";
std::string::const_iterator begin = input.begin();
std::string::const_iterator end = input.end();
using qi::xdigit;
using qi::_1;
using qi::_2;
using qi::_val;
qi::rule<std::string::const_iterator, uchar()> pchar =
('%' > xdigit > xdigit) [_val = (_1 << 4) + _2];
std::string result;
bool r = qi::parse(begin, end, pchar, result);
if (r && begin == end) {
std::cout << "Output: " << result << std::endl;
std::cout << "Expected: < (LESS-THAN SIGN)" << std::endl;
} else {
std::cerr << "Error" << std::endl;
return 1;
}
return 0;
}
問候,
MatthijsMöhlmann