2012-03-14 10 views
4

文字列からアクセントを削除するより効率的な方法があります。例えばCの文字列からアクセントを削除する

removeaccents("áèfoo") 

出力:そこASCIIテーブルの

aefoo 

無アクセント、私はこれを行うにはどのようには考えています。前もって感謝します。 :)

+0

変換テーブルではなく、いつでもラダーを使用できます。 –

+9

文字列がどのようなエンコーディングを使用していますか? – loganfsmyth

+1

可能なヘルプの質問:http://stackoverflow.com/questions/144761/how-to-remove-accents-and-tilde-in-ac-stdstring – chikuba

答えて

7

あなたが探しているような音unac()。 manページから:

unac is a C library that removes accents from characters, regardless of the character set (ISO-8859-15, ISO-CELTIC, KOI8-RU...) as long as iconv(3) is able to convert it into UTF-16 (Unicode).

私は、ダウンロードページを見つけることができませんでした(私はhereであることを意図だと思うが、リンクは現在404ingされます)。

sudo apt-get install libunac1-dev 

あなたはそれがインストールされています一度あなたとリンクするようにコンパイラに指示する(あなたのコンパイラオプションに-lunacを追加する必要があります、GCCを使用していると仮定すると:あなたがUbuntuのにしている場合は、あなたがそれを得ることができますunacライブラリ)。

+0

ありがとうございます。私はダウンロードしてインストールしましたが、リンクを試してコンパイルすると、次のエラーが発生します: '/tmp/ccAKGVl9.o:' main '関数内: ILD.c :(。text + 0x651) unac_string」 collect2は:ldは1つの終了ステータスを返した '私のコード: 'の#include // ... のchar *アウト= 0; size_t out_length = 0; if(unac_string( "ISO-8859-1"、 "été"、strlen( "été")、&out、&out_length)){ printf( "unac_string"); } else { printf( "%。* s0"、out_length、out); 無料(アウト); } ' – Jack

+0

' gcc'で '-lunac'オプションを使って解決し、' ISO-8859-1'を 'UTF-8'エンコーディングに変更しました。どうもありがとうございます:) – Jack

+0

大歓迎です。私は答えにそれを編集:) –

関連する問題