Я держу шестнадцатеричные значения в целых числах без знака size_t
и хотел бы преобразовать их в wchar_t
для хранения в структуре данных и, при желании, вывести в std::cout
в качестве символа / символа UTF-8, когда это допустимо.
Я пробовал приведение без особого успеха: size_t h = 0x262E;
печатает 9774
при выполнении приведения, например, к wchar_t
.
Некоторый минимальный код:
#include <iostream>
#include <vector>
int main() {
std::setlocale( LC_ALL, "" );
auto v = std::vector<size_t>( 3, 0x262E ); // 3x peace symbols
v.at( 1 ) += 0x10; // now a moon symbol
for( auto &el : v )
std::cout << el << " ";
return 0;
}
Выход: 9774 9790 9774
Что я хочу: ☮ ☾ ☮
Я могу напечатать символы, используя printf( "%lc ", (wchar_t) el );
. Есть ли лучшее "современное" C ++ решение для этого?
Мне нужно иметь возможность печатать что-нибудь в диапазоне 0000-27BF
UTF-8 только на linux .