Tu pregunta deja flecos sin cubrir:
- X1 .. X3 son valores fijos? es decir, SIEMPRE van a ser esos tres? hay mas? pueden estar en cualquier orden?
- El último grupo tiene 1X3 en vez del esperado X3, es un error?
- Trabajas en C o C++?
Bueno, en cualquier caso, para dividir el string puedes usar la función strtok. Con esto conseguirás dividir la cadena en
* X1bienvenido
* X2temp
* X3pruebas
Después de eso podrías identificar el nombre de la variable... eso dado que no queda claro cual es el formato concreto corre de tu parte. Y finalmente, una vez tienes el nombre de la variable y sabes cuánto ocupa dicho nombre, coges el resto del string y ese es el valor de dicha variable.