¿Cuál es el uso de wchar_t en la programación general?

6 minutos de lectura

avatar de usuario
Vikú

Hoy estaba aprendiendo algunos conceptos básicos de C++ y me enteré de wchar_t. No pude entender, ¿por qué necesitamos este tipo de datos y cómo lo uso?

  • se usa cuando char no es suficiente, por ejemplo, cuando se usan cadenas y caracteres Unicode.

    – Un tipo programador

    22 de noviembre de 2012 a las 9:45


  • lo necesitará, si quiere trabajar con caracteres sánscritos en su programa, por ejemplo

    usuario1773602

    22 de noviembre de 2012 a las 9:45

  • algunas personas Piensa que no deberías usarlo en absoluto.

    – Ian

    22 de noviembre de 2012 a las 9:46

  • ¿Cómo podemos usar wchar_t como cadena? ¿Podemos mostrar la cadena completa en función de ese carácter?

    – Vikú

    22 de noviembre de 2012 a las 9:58

wchar_t está diseñado para representar texto en ancho fijo, multibyte codificaciones; ya que wchar_t normalmente tiene un tamaño de 2 bytes, se puede usar para representar texto en cualquier codificación de 2 bytes. También se puede utilizar para representar texto en ancho variable codificaciones multibyte de las cuales la más común es UTF-16.

En las plataformas donde wchar_t tiene un tamaño de 4 bytes, se puede usar para representar cualquier texto usando UCS-4 (Unicode), pero dado que en la mayoría de las plataformas solo tiene 2 bytes, solo puede representar Unicode en una codificación de ancho variable (generalmente UTF-16). Es más común usar char con una codificación de ancho variable, por ejemplo, UTF-8 o GB 18030.

Sobre el único sistema operativo moderno para usar wchar_t extensivamente es Windows; esto se debe a que Windows adoptó Unicode antes de que se extendiera más allá de U+FFFF, por lo que una codificación de 2 bytes de ancho fijo (UCS-2) parecía sensata. Ahora UCS-2 es insuficiente para representar la totalidad de Unicode, por lo que Windows usa UTF-16, aún con wchar_t Unidades de código de 2 bytes.

wchar_t es un carácter amplio. Se utiliza para representar caracteres que requieren más memoria para representarlos que un normal char. Es, por ejemplo, muy utilizado en la API de Windows.

Sin embargo, el tamaño de un wchar_t depende de la implementación y no se garantiza que sea más grande que char. Si necesita admitir una forma específica de formato de caracteres de más de 8 bits, es posible que desee recurrir a char32_t y char16_t que están garantizados para ser de 32 y 16 bits respectivamente.

avatar de usuario
intiyaz ahammad shaik

wchar_t se usa cuando se necesita almacenar caracteres con códigos mayores a 255 (tiene un valor mayor que char puede almacenar).

char puede tomar 256 valores diferentes que corresponden a entradas en las tablas ISO Latin. Por otro lado, wide char puede tomar más de 65536 valores que corresponden a valores Unicode. Es un estándar internacional reciente que permite la codificación de caracteres para prácticamente todos los idiomas y símbolos de uso común.

  • ASCII tiene solo 7 bits de ancho y los caracteres superiores a 127 no pertenecen a ASCII. Unicode contiene más de 65536 caracteres y sizeof(wchar_t) es mayor que 2 en muchas plataformas. He corregido tu publicación.

    – clemens

    4 de enero de 2018 a las 7:06

los wchar_t tipo de datos se utiliza para mostrar wide characters that will occupy 16 bits. Este tipo de datos ocupa “2 o 4” bytes.

Sobre todo el wchar_t El tipo de datos se usa cuando se usan idiomas internacionales como el japonés.

avatar de usuario
Misaal D’souza

Entiendo que la mayoría de ellos lo han respondido, pero como también estaba aprendiendo los conceptos básicos de C ++ y llegué a conocer wchar_tMe gustaría decirte lo que entendí después de buscar al respecto.

  1. wchar_t se usa cuando necesita almacenar un carácter sobre ASCII 255, porque estos caracteres tienen un tamaño mayor que nuestro tipo de carácter ‘char’. Por lo tanto, requiere más memoria.

    p.ej:

           wchar_t var = L"Привет мир\n"; // hello world in russian
    
  2. Generalmente tiene un tamaño de carácter superior a 8 bits.

  3. El sistema operativo Windows lo utiliza sustancialmente.

  4. Por lo general, se usa cuando hay un idioma extranjero involucrado.

  • > wchar_t se usa cuando necesita almacenar un carácter sobre ASCII 255 No es necesariamente cierto, un carácter codificado con UTF-8 puede almacenar todos los caracteres Unicode ya que un carácter UTF-8 puede ocupar uno o más puntos de código. Sin embargo, Windows trata una cadena estrecha como específica de la configuración regional, por lo que tendrá que usar wchar_t en su lugar.

    – Jaiganesh Kumaran

    12 de enero a las 3:24


avatar de usuario
Daramarak

El tipo wchar_t se usa para caracteres de juegos de caracteres extendidos. Entre otros usos, se usa con wstring, que es una cadena que puede contener caracteres individuales de conjuntos de caracteres extendidos, a diferencia de la cadena que puede contener caracteres individuales de tamaño char, o usar más de un carácter para representar un solo signo (como utf8 ).

El tamaño de wchar_t depende de las configuraciones regionales y, según el estándar, se dice que puede representar a todos los miembros del conjunto de caracteres extendido más grande admitido por las configuraciones regionales.

  • > wchar_t se usa cuando necesita almacenar un carácter sobre ASCII 255 No es necesariamente cierto, un carácter codificado con UTF-8 puede almacenar todos los caracteres Unicode ya que un carácter UTF-8 puede ocupar uno o más puntos de código. Sin embargo, Windows trata una cadena estrecha como específica de la configuración regional, por lo que tendrá que usar wchar_t en su lugar.

    – Jaiganesh Kumaran

    12 de enero a las 3:24


avatar de usuario
oxidado

wchar_t se especifica en el lenguaje C++ en [basic.fundamental]/p5 como:

Escribe wchar_t es un tipo distinto cuyos valores pueden representar códigos distintos para todos los miembros del conjunto de caracteres extendido más grande especificado entre las configuraciones regionales admitidas ([locale]).

En otras palabras, wchar_t es un tipo de datos que permite trabajar con texto que contiene caracteres de ningún idioma sin preocuparse por la codificación de caracteres.

En plataformas que admiten Unicode por encima de la plano basico multilingue, wchar_t suele ser de 4 bytes (Linux, BSD, macOS).

Solo en Windows wchar_t es de 2 bytes y está codificado con UTF-16LE, debido a razones históricas (Windows inicialmente solo admitía UCS2).

En la práctica, el “1 wchar_t = 1 carácter” se vuelve aún más complicado, debido a que Unicode admite la combinación de caracteres y grafemas (caracteres representados por secuencias de puntos de código).

¿Ha sido útil esta solución?