ワイド文字列を大文字または小文字に変換する必要がある既存のVisual C++コードがあります。LCID(Visual C++)を指定したワイド文字の変換ケース
これには落とし穴があることは知っていますが(トルコ語の「I」など)、あなたがその言語を知っていれば、これらのほとんどは洗い流すことができます。幸いなことに、このコード領域では、LCID値(ロケールID)を知っています。これは言語を知っていると同じです。
LCIDはWindowsタイプのため、ワイド文字列を大文字または小文字に変換するWindows関数はありますか?
Cランタイム関数_towupper_l()は理想的ですが、LCIDの代わりに_locale_tパラメータをとります。したがって、LCIDを_locale_tに変換する完全な信頼性の高い方法がない限り、不適切です。
? –
いいえ申し訳ありません私は元の投稿にそのことについてのコメントを追加するのを忘れていました。 towupper()のドキュメントでは、 "towupperの大文字と小文字の変換はロケール固有です。現在のロケールに関連する文字だけが変更されます。_l接尾辞が付いていない関数は、現在設定されているロケールを使用します。 _l suffixはロケールをパラメータとして使用し、現在設定されているロケールの代わりに使用します。 "LCIDは現在のロケールではない可能性があるので、そのロケールを使用して信頼できる結果を得るには、_lバージョンを使用して該当する_locale_tを渡す必要があります。 – appleton