podstawowy problem to kodowanie. Chcesz używać znaków z poza zakresu ASCII, ergo musisz użyć takiego samego kodowania w programie jaki jest używany na konsoli (albo zmieniać ustawienie konsoli, tak jak próbowałeś). W drugiej kolejności konsola/terminal musi wspierać odpowiedni zakres znaków, ale współcześnie rzadko to jest problem.
Zaproponowane rozwiązanie to użycie znaków Unicode nie obsługiwane przez kodowanie, które chcesz użyć CP437.
Najlepiej jeśli cały twój kod użyje jednego kodowania. Najlepiej UTF-8. Tego samego kodowania użyj do kodu źródłowego dzięki czemu nie będziesz miał problemów z polskimi znakami (kompilator też warto ustawić, ale chyba też domyślnie jest ustawione UTF-8).
http://ideone.com/HuN8HX
Kopiuj
string superscriptNumber(int x) {
static auto superscriptDic = map<char, string> {
{'0', "\xE2\x81\xB0"},
{'1', "\xC2\xB9"},
{'2', "\xC2\xB2"},
{'3', "\xC2\xB3"},
{'4', "\xE2\x81\xB4"},
{'5', "\xE2\x81\xB5"},
{'6', "\xE2\x81\xB6"},
{'7', "\xE2\x81\xB7"},
{'8', "\xE2\x81\xB8"},
{'9', "\xE2\x81\xB9"}
};
string result;
for (auto a : to_string(x)) {
result.append(superscriptDic[a]);
}
return result;
}
Wynik nie jest zbyt ładny ale działa.
Wersja z jawnie wpisanymi znakami: http://ideone.com/h47tKc