私は、内部と顧客の両方で使用されるいくつかのライブラリの作成に取り組んでおり、UnicodeとASCIIの両方をサポートするための最良の方法は何かと考えていました。Microsoft(MFCライブラリ内)はUnicodeクラスとASCIIクラスの両方を書き込み、マクロを使用してヘッダーファイルでこれと同様のことを行うようです。
#ifdef _UNICODE
#define CString CStringW
#else
#define CString CStringA
#endif
私はマクロの大ファンではありませんが、それは仕事をします。STLを使用してライブラリを作成している場合、次のようなものを含むヘッダーを作成することは理にかなっていますか?
#ifdef _UNICODE
#define GetLastErrorString GetLastErrorStringW
#else
#define GetLastErrorString GetLastErrorStringA
#endif
std::string GetLastErrorStringA();
std::wstring GetLastErrorStringW();
または、ASCII用とUnicode用の別々のライブラリをリリースする必要がありますか?
この状況で人々が何をするのが最善だと思うのか疑問に思うだけです。
更新:いくつかのコメントと質問に対処する:
- これらはC++クラスライブラリになります。
- アジアの文字セットをサポートしたいので、UTF-16エンコーディングを使用する必要があると思います。
- Unicodeを実装する理由は2つあります。1)すべての新しいSDKがUnicodeをサポートしており、将来のSDKまたはサードパーティライブラリが将来的に個別のASCIIバージョンをサポートすることを確信していません。2)アプリケーションを完全に国際化するわけではありませんが、ユーザー入力(名前など)とアジア文字を含むパスからのファイルの読み込みを処理できれば便利です。