1

我正在重构一些遗留的 c++ 代码以支持 Unicode,当 _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