Преобразование INT8...INT64, UINT8...UINT64,float, double, в WCHAR*

Я использую C/C++, есть ли какие-либо функции Windows, или какие-либо очень быстрые способы конвертировать из любого из типов в заголовке в const WCHAR*?

Таким образом, у меня есть большой случай, когда я проверяю свои данные, какого они типа, после того, как они попадают в какую-то ветку, где мне нужно преобразовать эти данные в WCHAR*.

Так, например, если у меня есть 21, я хочу, чтобы это было L"21". 32,322 => L"32,322" и т. Д.

Я мог бы сделать это вручную, но я бы предпочел, если бы был какой-то более быстрый путь! Эти преобразования, кажется, происходят на более низком уровне.

Спасибо!

1 ответ

Ты можешь использовать std::to_wstring если вы используете C++11 или C++14. В противном случае используйте swprintf следующим образом:

Создайте широкий строковый буфер с подходящим размером массива:

wchar_t wstr[32];

Чтобы преобразовать в целое число, используйте "swprintf" с форматом "%d":

swprintf(wstr, L"%d", 21);

Теперь "WSTR" содержит ваш "21"

А для преобразования в число с плавающей запятой используйте swprintf в формате "%.* F". Мы будем использовать максимум 3 цифры после десятичной точки (по умолчанию это 6). Так что для хранения потребуется меньше wchar_t:

swprintf(wstr, L"%.*f", 3, 32.322f);

Теперь 'WSTR' содержит ваш "32,322"

Посмотрите на следующую страницу MSDN для получения дополнительной информации о 'swprintf'

sprintf, swprintf

Другие вопросы по тегам