これは不可能であるか、些細なことです。ささいなアプローチは次のとおりです。
元のポスターの練習問題として残した不可能なもの。これらは軍団であるため、私は愚かであるが可能性のある(読む:愚かな)アプローチについても言及しません。データ破壊はデータ処理における資本犯罪であり、そのように扱われる必要があります。
「Unicode文字」とは、実際には「Unicodeコードポイント」を意味すると想定していることに注意してください。つまり、プログラマーに見える文字です。ユーザーに表示される文字の場合は、代わりに「Unicode書記素(クラスター)」が必要です。
また、最初にテキストを正規化しない限り、世界を憎むでしょう。NFDをお勧めします。
編集
元のポスターでさらに明確にした後、彼がやりたいことは、新しいプログラムを作成しなくても、既存のツールを使用して非常に簡単に達成できるようです。たとえば、これは特定のアラビア文字のセットをUTF-8入力ファイルからASCII出力ファイルに変換します。
$ perl -CSAD -Mutf8 -pe 'tr[ابتثجحخد][abttjhhd]' < input.utf8 > output.ascii
これらのコードポイントのみを処理します。
U+0627 ا ARABIC LETTER ALEF
U+0628 ب ARABIC LETTER BEH
U+0629 ة ARABIC LETTER TEH MARBUTA
U+062A ت ARABIC LETTER TEH
U+062B ث ARABIC LETTER THEH
U+062C ج ARABIC LETTER JEEM
U+062D ح ARABIC LETTER HAH
U+062E خ ARABIC LETTER KHAH
U+062F د ARABIC LETTER DAL
したがって、必要なマッピングに拡張する必要があります。
コマンドラインツールではなくスクリプトで使用する場合も簡単です。さらに、次のようなマッピングを設定することで、名前でキャラクターについて話すことができます。
"\N{ARABIC LETTER ALEF}" => "a",
"\N{ARABIC LETTER BEH}" => "b",
"\N{ARABIC LETTER TEH}" => "t",
"\N{ARABIC LETTER THEH}" => "t",
"\N{ARABIC LETTER JEEM}" => "j",
"\N{ARABIC LETTER HAH}" => "h",
"\N{ARABIC LETTER KHAH}" => "h",
"\N{ARABIC LETTER DAL}" => "d",
これがより大きなC++プログラムのコンポーネントであると想定される場合は、おそらくこれをC ++で実装する必要がありますが、音訳サポートを含むICU4Cライブラリを使用する必要はありません。
しかし、必要なのが単純な変換だけである場合、専用のC++プログラムを作成する理由がわかりません。仕事が多すぎるようです。