<ctype.h>
ルックアップ テーブルとビット マスク (このメソッド) を使用して の実装を構築しようとしています。しかし、私はC11標準で、現在のロケールに関するいくつかの情報が必要であることを見てきました:
7.4 文字の扱い
<ctype.h>
[...]
2 これらの関数の動作は、現在のロケールの影響を受けます。
それで、<locale.h>
実装が必要ですか?<ctype.h>
C 標準ライブラリを使用して実装を管理するにはどうすればよいですか?
8ビット文字に対してこれを行うための高速で簡単な方法は、LC_CTYPEの定義された値ごとに1つのビットマスクを持つことです。ワイド文字タイプの場合、2段階ルックアップなどの方法でテーブルのサイズを減らすことができます。効率的にするには、これを文字エンコードごとに設計する必要があります。LC_CTYPEを動的に検索すると、新しいロケールをより簡単に追加できるようになります。
16かそこらの1バイトのテーブルで西洋の言語をカバーできるように私には見えます。すべてを行うには約50のテーブルが必要であり、そのうちのいくつかは非常に面倒です。