Estoy tratando de escribir código de plataforma cruzada i18n C++. Como la mayoría de los sistemas Linux prefieren usar UTF-8 como codificación de caracteres, pensé que debería usar string en linux y wstring en Windows. ¿Está tchar.h disponible en Linux? ¿Qué es un reemplazo equivalente para tchar.h en Linux?tchar.h en linux
Respuesta
Puede encontrar el artículo this útil. En particular, cerca del final, discuten un poco sobre el uso de TCHAR y el manejo del código de Windows.
El artículo es el resumen:
TCHAR se traducirá en una amplia tipo de datos de carácter al compilar el código con el compilador de C de GNU (la mayoría de las bibliotecas portátiles definen TCHAR en sus cabeceras y se refieren a wchar_t). Esto, de hecho, fue la forma en que convertí mi programa C++ en un generador de anagramas: utilicé cadenas estándares de C++ rellenas con UTF-8 y alimenté los datos con punteros a wchar_t para las funciones de la biblioteca. Los datos UTF-8 interpretados como UTF-32 equivalen a basura (pero es tremendamente útil para la confusión de datos y errores).
En realidad no es tan fácil. string.size() le dará el número de bytes UTF-8, no caracteres Unicode. Con toda justicia, wstring.size() no le dará el número de caracteres en presencia de sustitutos. Pero en la práctica, esos no se usan en aplicaciones comunes.
Por lo tanto, la respuesta real depende realmente de por qué necesita las cadenas Unicode. ¿Es solo la localización de una IU? ¿Tiene la entrada del usuario? ¿Necesitas analizar esa entrada?
Para construir mi fuente centrada en Windows, pude utilizar el archivo tchar.h de Cygwin que se encuentra en la carpeta cygwin \ usr \ include \ w32api.
Estoy construyendo con Android NDK. Para mis propósitos hice una copia de tchar.h y la parché.
//#include <crtdefs.h>
#define _CRTIMP
//#define _strninc(_pc,_sz) (((_pc)+(_sz)))
// _CRTIMP size_t __cdecl __strncnt(const char *_Str,size_t _Cnt);
- 1. Visual Studio 2010 C++, No se puede abrir el archivo de inclusión: 'afxwin.h', 'TCHAR.H' y 'cassert'
- 2. Detectar Windows o Linux en C, C++
- 3. Multitouch en Linux
- 4. memcpy asincrónico en Linux?
- 5. Google protobuf en Linux
- 6. Extended Ascii en Linux
- 7. especie estable en Linux
- 8. Equivalente entrelazado en Linux
- 9. RubyMine en linux
- 10. Limitación Classpath en Linux
- 11. Lea XML en LINUX
- 12. list_entry en Linux
- 13. _splitpath en Linux
- 14. setcap en Linux
- 15. questionmarks en Linux dirlisting
- 16. Clang bloque en Linux?
- 17. Programando VHDL en Linux?
- 18. Linux - Linebreak en IPython
- 19. scull en Linux
- 20. C# en entorno linux
- 21. Programación Flash en Linux
- 22. CreateRemoteThread en Linux
- 23. C en Linux Terminal
- 24. Capturar entrada en Linux
- 25. rastreando pthreads en linux?
- 26. conceptos pthread en Linux
- 27. SO_REUSEPORT en Linux
- 28. -emit-llvm en Linux
- 29. Procesamiento paralelo en Linux
- 30. Directorio JAVA_HOME en Linux
Para ser claros, tchar.h es solo para Windows. Pero es bastante trivial lanzar tu propio tchar.h. – Naaff