Преобразование 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'