Unicode, _stprintf () и смешанные текстовые направления

Я работаю над рефакторингом некоторого устаревшего кода 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 \) управляющий персонаж. Тем не менее, я не могу не думать, что может быть более простое решение, о котором я не знаю, как глобальные настройки или что-то в этом роде? Есть ли что-то подобное?

Эти строки, которые передаются в SetWindowText и отображаются в неправильном порядке из-за арабского языка. Моя главная цель — сделать так, чтобы они правильно отображались в пользовательском интерфейсе.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]