¿Cómo puedo imprimir los valores de wchar_t en la consola?

¿Cómo puedo imprimir los valores de wchar_t en la consola?

Editar:esto no funciona si está intentando escribir texto que no se puede representar en su configuración regional predeterminada. :-(

Usa std::wcout en lugar de std::cout .

wcout << ru << endl << en;

¿Puedo sugerir std::wcout? ?

Entonces, algo como esto:

std::cout << "ASCII and ANSI" << std::endl;
std::wcout << L"INSERT MULTIBYTE WCHAR* HERE" << std::endl;

Puede encontrar más información en una pregunta relacionada aquí.


No puede imprimir cadenas anchas de forma portátil utilizando las instalaciones estándar de C++.

En su lugar, puede utilizar la biblioteca {fmt} de código abierto para imprimir texto Unicode de forma portátil. Por ejemplo (https://godbolt.org/z/nccb6j):

#include <fmt/core.h>

int main() {
  const char en[] = "Hello";
  const char ru[] = "Привет";
  fmt::print("{}\n{}\n", ru, en);
}

impresiones

Привет
Hello

Esto requiere compilar con el /utf-8 opción de compilador en MSVC.

A modo de comparación, escribiendo a wcout en Linux:

wchar_t en[] = L"Hello";
wchar_t ru[] = L"Привет";
std::wcout << ru << std::endl << en;

puede transliterar el texto ruso al latín (https://godbolt.org/z/za5zP8):

Privet
Hello

Este problema en particular se puede solucionar cambiando a una configuración regional que use UTF-8, pero existe un problema similar en Windows que no se puede solucionar solo con las instalaciones estándar.

Descargo de responsabilidad :Soy el autor de {fmt}.