использовать версию Unicode функции WriteConsole
.
также, убедитесь, что хранить исходный код в UTF-8 с BOM, который поддерживается г ++ и Visual C++
примера обоих, при условии, что вы хотите представить греческую альфа, учитывая его Unicode код в виде «U + 03B1» (код, который вы перечислены стенды для строчной «т»):
#include <stdlib.h> // exit, EXIT_FAILURE, wcstol
#include <string> // std::wstring
using namespace std;
#undef UNICODE
#define UNICODE
#include <windows.h>
bool error(char const s[])
{
::FatalAppExitA(0, s);
exit(EXIT_FAILURE);
}
namespace stream_handle {
HANDLE const output = ::GetStdHandle(STD_OUTPUT_HANDLE);
} // namespace stream_handle
void write(wchar_t const* const s, int const n)
{
DWORD n_chars_written;
::WriteConsole(
stream_handle::output,
s,
n,
&n_chars_written,
nullptr // overlapped i/o structure
)
|| error("WriteConsole failed");
}
int main()
{
wchar_t const input[] = L"u+03B1";
wchar_t const ch = wcstol(input + 2, nullptr, 16);
wstring const s = wstring() + ch + L"\r\n";
write(s.c_str(), s.length());
}
Используйте строки широких символов и выходные функции, такие как [ 'wprintf'] (http://en.cppreference.com/ w/c/io/fwprintf) или ['std :: wcout'] (http://en.cppreference.com/w/cpp/io/cout)? –
@joachim: не поможет (без некоторых дополнительных лесов), потому что они переводится с Unicode на байт-ориентированные. –
u + 0074 - 't'. alpha будет u + 03B1 в Unicode. –