std::cout работает с char'ом. а что вы в этот char пихнете ASCII 7-bit или UTF-8 или cp1251 ему фиолетово.
std::wcout работает с широкими символами (wchar_t а не w_char как думают некоторые). каждая буковка по 4 байта =) там влезут все извесные миру кракозябры и еще место останется.
С локалями тоже не все так просто. ищи по форуму я где-то приводил примерчик.
а для рисования текстовых менюшек есть ncurses уже готовый и рабочий, пользуйся, не стесняйся