Boost :: Spirit :: QI-Parser: Index des analysierten Elements

Ist es möglich (mit Boost :: Spirit :: QI), Zahlen aus einer durch Kommas getrennten Zeichenfolge zu analysieren, sodass ich den Index jeder analysierten Zahl erhalte?

Angenommen, ich habe eine Zeichenfolge"23,123,65,1" und ich möchte jede dieser Zahlen an bestimmten Stellen (0, 1, 2, 3) in eine Matrix einfügen. Ein Weg, dies zu tun, wäre, die Zahlen in einen std :: -Vektor zu analysieren und sie dann in die Matrixzeile zu kopieren, aber es ist nicht besonders schnell.

Derzeit verwende ich die Vektorvariante:

Matrix data(10, 4);
int row = 0;
int col = 0;
std::string str = "23,123,65,1";
std::vector<double> res;
if (qi::parse(str.begin(), str.end(), qi::double_ % ',', res))
{
  std::for_each(res.begin(), res.end(), [&col, &data, &row](double elem) {

      data(row, col) = elem;
      col++;
});
}

Es wäre fantastisch, wenn der Parser einen Erfolgs-Callback hätte, der eine Lambda-Funktion oder eine ähnliche Funktion übernimmt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage