puedes identificar los numeros por su código ascii, caracter '0' = 48 printf("%d", "0");
creas una lista de char* donde cada elemento de la lista es un grupo de caracteres numéricos contiguos, luego recorrer toda la lista convirtiendo cada char* en tipo numerico y los vas sumando en un acumulador, simple no?
Una forma simple es usar expresiones regulares, hay várias bibliotecas para c y c++,
esa es una buena opcion pero si lo hago asi:
tomemos el ejemplo anterior:
21x+3y=4;
me sumaria 2+1+3+4=9
pero ese resultado es falso...el correcto seria:
21+3+4=28...