c++ bilmem ama c'de şöyle yapabilirsin bunu (c++'ta da çalışır diye tahmin ediyorum):
stdlib.h'daki (c++'taki karşılığı cstdlib'miş galiba)
atoi fonksiyonu karakterleri sayılara (int türü) çevirir.
prototipi int atoi (const char *str); şeklinde.
str adresinden başlayarak nümerik olmayan karakterle karşılaşana kadarki nümerik karakterleri int türüne çevirir. yani senin stringte atoi(p) çağrısının 256 sonucunu vermesi gerek. (long türü için atol fonksiyonu)
4'ü almak içinse bu karakterin adresini göndermelisin fonksiyona. string içindeki sırası sabitse atoi(p+4) şeklinde olmalı çağrı. (sabit değilse o zaman kasmak gerekir.)
x, y karakterlerine ise p[3], p[5] ile ulaşabilirsin.
pek kısa olmadı ama c'de stringler librarylere rağmen zordur biraz. belki c++'ta kolay bir yolu olabilir.