1

Unicode をサポートするために一部のレガシー C++ コードのリファクタリングに取り組んでおり、_stprintf が _T("%s %s") のフォーマット文字列で使用され、引数が次の場合に問題が発生しています。 ) の後に、文字配列に格納されたいくつかの数字が続きます。コード スニペットを次に示します。

auto buf = std::make_unique<TCHAR>();
TCHAR Text[]{_T("حبيبيحبيبيحبيب")};
TCHAR Number[]{_T("12345678h90")};

_stprintf(buf.get(), _T("%s %s"), Text, Number);

私が buf で取得するのは حبيبيحبيبيحبيب 12345678h90 ですが、取得したいのは Text 配列の内容とそれに続く Number 配列の内容です。(ここに貼り付けようとしましたが、_stprintfと同じ方法で自動的にフォーマットされました...)。

この理由は、アラビア語のテキストが強力な文字型であり、すべての数字が弱い型であるためであり、比較的単純な解決策があることを知っています- _stprintf をオーバーロードし、パラメーター文字列が数字で始まるかどうかを確認し、先頭に U+200E ( \u200E) 制御文字。しかし、グローバル設定か何かのように、私が知らないもっと簡単な解決策があるかもしれないと思わずにはいられませんか?そのようなものはありますか?

これらの文字列は SetWindowText に渡され、アラビア語のために間違った順序で表示されます。私の主な目標は、それらを UI で適切にレンダリングすることです。

4

0 に答える 0