Puoi provare con expat, eventualmente usando uno dei wrapper C++ citati nella pagina che ti ho linkato per usarla con un approccio più object-oriented.
Amaro C++, il gusto pieno dell'undefined behavior.
Regole del Forum