The ICU [1] transliterator does this. Here is an example showing how to use it:
icu::ErrorCode status;
auto t = icu::Transliterator::createInstance("Any-Latin; NFKD", UTRANS_FORWARD, status);
t->transliterate("unicode string");
[1] http://site.icu-project.org/