Boost :: Spirit :: QI parser: índice del elemento analizado
¿Es posible (usando Boost :: Spirit :: QI) analizar números de una cadena separada por comas para obtener el índice de cada número analizado?
Supongamos que tengo una cuerda"23,123,65,1"
y quiero insertar cada uno de estos números en una matriz en las ubicaciones dadas (0, 1, 2, 3). Una forma de hacerlo sería analizar los números en un std :: vector y luego copiarlos en la fila de la matriz, pero no es particularmente rápido.
Actualmente estoy usando la variante vectorial:
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++;
});
}
Sería increíble si el analizador tuviera una devolución de llamada exitosa que tome una función lambda o una función similar.