Ich versuche Boost.Sprit x3 zu verwenden, um eine Sequenz von zwei Ganzzahlen in eine std::pair<int, int>
. Gemessen an der Dokumentation sollte der folgende Code kompiliert:Übereinstimmend eine Sequenz von zwei Ganzzahlen in ein `std :: pair <int, int>`
#include <string>
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/home/x3.hpp>
int main()
{
using namespace boost::spirit::x3;
std::string input("1 2");
std::pair<int, int> result;
parse(input.begin(), input.end(), int_ >> int_, result);
}
Es ist jedoch nur die erste ganze Zahl übereinstimmt. Wenn ich std::pair<int, int> result;
zu int result;
ändere und dann result
drucke, erhalte ich 1
als meine Ausgabe.
Warum passiert das? Ist int_ >> int_
nicht die richtige Methode zum Definieren eines Parsers, der entspricht (und als Attribute festlegt) zwei Ganzzahlen?
Es sieht so aus, als müssten Sie den relevanten Boost.Fusion Header einfügen, der 'std :: pair' anpasst. –
@ T.C .: Ja, das hat das Problem gelöst. Vielen Dank! Poste deinen Kommentar als Antwort und ich akzeptiere ihn. –