Saltar al contenido

LPCSTR, LPCTSTR y LPTSTR

Nuestros mejores desarrolladores agotaron sus depósitos de café, investigando todo el tiempo por la respuesta, hasta que Leonardo halló el resultado en GitLab por lo tanto en este momento la compartimos aquí.

Solución:

Para responder a la primera parte de tu pregunta:

LPCSTR es un puntero a una const string (LP significa puntero largo)

LPCTSTR es un puntero a un const TCHAR string(TCHAR siendo un carácter ancho o un carácter dependiendo de si UNICODE está definido en su proyecto)

LPTSTR es un puntero a (no constante) TCHAR string

En la práctica, cuando hablamos de estos en el pasado, hemos omitido la frase “puntero a un” por simplicidad, pero como lo menciona lightness-races-in-orbit, todos son punteros.

Este es un gran artículo de proyecto de código que describe cadenas de C++ (vea 2/3 hacia abajo para ver un gráfico que compara los diferentes tipos)

Rápido y sucio:

LP == Llargo PAGSpuntero Piensa en pointer o char*

C = Const, en este caso, creo que se refieren al personaje string es una const, no siendo el puntero const.

STR es string

los T es para un carácter ancho o char (TCHAR) dependiendo de las opciones de compilación.

Cadenas ANSI de 8 bits

  • char: carácter de 8 bits (tipo de datos C/C++ subyacente)
  • CHAR: alias de char(tipo de datos de Windows)
  • LPSTR: null-terminado string de CHAR(Llargo PAGSpuntero)
  • LPCSTR: constante null-terminado string de CHAR(Llargo PAGSpuntero Cconstante)

Cadenas Unicode de 16 bits

  • wchar_t: carácter de 16 bits (tipo de datos C/C++ subyacente)
  • WCHAR: alias de wchar_t(tipo de datos de Windows)
  • LPWSTR: null-terminado string de WCHAR(Llargo PAGSpuntero)
  • LPCWSTR: constante null-terminado string de WCHAR(Llargo PAGSpuntero Cconstante)

Dependiendo de UNICODE definir

  • TCHAR: alias de WCHAR si se define UNICODE; de lo contrario CHAR
  • LPTSTR: null-terminado string de TCHAR(Llargo PAGSpuntero)
  • LPCTSTR: constante null-terminado string de TCHAR(Llargo PAGSpuntero Cconstante)

Entonces:

Articulo 8 bits (ANSI) 16 bits (Amplio) Varía
personaje CHAR WCHAR TCHAR
string LPSTR LPWSTR LPTSTR
string (const.) LPCSTR LPCWSTR LPCTSTR

Lectura extra

TCHARCarácter de texto(archivo.es)


¿Por qué la página de códigos predeterminada de 8 bits se llama “ANSI”?

Desde Unicode y Windows XP
por Cathy Wissink
Gerente de Programa, Globalización de Windows
Corporación Microsoft
mayo de 2002

A pesar de la compatibilidad subyacente con Unicode en Windows NT 3.1, la compatibilidad con la página de códigos siguió siendo necesaria para muchas de las aplicaciones y componentes de nivel superior incluidos en el sistema, lo que explica el uso generalizado de la “A”. [ANSI] versiones de las API de Win32 en lugar de la “W” [“wide” or Unicode] versiones. (El término “ANSI”, como se usa para referirse a las páginas de códigos de Windows, es una referencia histórica, pero hoy en día es un nombre inapropiado que persiste en la comunidad de Windows. La fuente de esto proviene del hecho de que la página de códigos de Windows 1252 se basó originalmente en un borrador de ANSI, que se convirtió en el estándar ISO 8859-1. Sin embargo, al agregar puntos de código al rango reservado para los códigos de control en el estándar ISO, la página de códigos de Windows 1252 y las páginas de códigos de Windows posteriores basadas originalmente en la serie ISO 8859-x se desviaron de ISO Hasta el día de hoy, no es raro que la comunidad de desarrollo, tanto dentro como fuera de Microsoft, confunda la página de códigos 8859-1 con Windows 1252, y vea que “ANSI” o “A” se usan para significar Windows compatibilidad con la página de códigos).

Si sostienes algún titubeo o disposición de medrar nuestro crónica eres capaz de realizar una ilustración y con deseo lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *