Игнорировать сложности и подводные камни широких струн в целом; и убедитесь, что данные, с которыми вы работаете, кодируются с использованием UTF-8.
В C ++ строки UTF-8 могут обрабатываться так же, как расширенные строки ASCII; если только вам не удастся манипулировать ими (рубить их, считать персонажей и тому подобное).
Если все, что вас волнует, это сбор, хранение и отображение строк, это просто смехотворно тривиально.
(Без дополнительной информации о среде, в которой вы работаете, невозможно точно сказать, как вы бы позаботились об обеспечении UTF-8; но это действительно выходит за рамки этого вопроса. )
Edit:
В ответ на комментарии относительно того, что вы планируете делать (написание файла XML):
При работе с XML в частности ; это очень, очень просто:
Никогда не используйте UTF-8! или "N'DUUH!" для краткости.
В XML ASCII-баланс на практике будет всегда таким, чтобы UTF-8 была самой компактной системой кодирования.
(То есть, если каждому японскому символу в документе можно сопоставить символ ASCII, UTF-8 точно так же эффективен, как и UTF-16, с точки зрения пространства. Имена элементов XML традиционно излишне многословны, а японские предложения общеизвестно компактны, и при добавлении отступа текст на японском языке почти всегда будет соответствовать ASCII в изобилии.)