크로스 플랫폼 i18n C++ 코드를 작성하려고합니다. 대부분의 리눅스 시스템은 문자 인코딩으로 UTF-8을 사용하기를 원하기 때문에 Windows의 경우 linux와 wstring에 문자열을 사용해야한다고 생각했습니다. tchar.h는 리눅스에서 사용할 수 있습니까? 리눅스에서 tchar.h를 대체 할 수있는 것은 무엇입니까?리눅스에서 tchar.h
답변
this 개의 기사가 유용 할 수 있습니다. 특히 TCHAR을 사용하고 Windows 코드를 다루는 방법에 대해 약간 의논합니다.
기사의 요약은 다음과 같습니다 GNU C 컴파일러이 코드를 (대부분의 휴대용 라이브러리가 자신의 헤더에 TCHAR을 정의하고 wchar_t를 참조) 컴파일 할 때
TCHAR는 와이드 문자 데이터 형식으로 변환됩니다. 사실 C++ 프로그램을 anagram generator로 변환하는 방법이 있습니다. UTF-8로 채워진 표준 C++ 문자열을 사용하고 라이브러리 함수에 wchar_t로 캐스팅 된 포인터로 데이터를 입력했습니다. UTF-32로 해석 된 UTF-32 데이터는 쓰레기와 동일합니다 (그러나 데이터와 버그의 난독 화에 대단히 유용합니다).
실제로 그렇게 쉽지는 않습니다. string.size()는 유니 코드 문자가 아니라 UTF-8 바이트 수를 제공합니다. 모든 공정성에서 wstring.size()는 대리모가있는 경우에도 문자 수를 제공하지 않습니다. 그러나 실제로는 일반적인 앱에는 사용되지 않습니다.
그래서 진짜 대답은 왜 유니 코드 문자열이 필요한지에 달려 있습니다. UI의 현지화인가요? 사용자 입력이 있습니까? 해당 입력을 구문 분석해야합니까?
내 Windows 중심 소스를 빌드하려면 Cygwin의 cygwin \ usr \ include \ w32api 폴더에있는 tchar.h 파일을 사용할 수있었습니다.
저는 실제로 Android NDK를 사용하여 구축하고 있습니다. 제 목적으로 tchar.h의 복사본을 만들어 패치했습니다.
//#include <crtdefs.h>
#define _CRTIMP
//#define _strninc(_pc,_sz) (((_pc)+(_sz)))
// _CRTIMP size_t __cdecl __strncnt(const char *_Str,size_t _Cnt);
- 1. 리눅스에서 개미
- 2. 리눅스에서 파이핑하기
- 3. 리눅스에서 dtruss
- 4. 소스없이 리눅스에서 프로그램 배포하기
- 5. 리눅스에서 non-blocking 마운트
- 6. 리눅스에서 마우스 제어하기
- 7. 리눅스에서 라이브 DVD 굽기
- 8. 리눅스에서 버퍼링 필터링 파이프
- 9. 플래시 문자가 리눅스에서 사용되었습니다
- 10. 리눅스에서 차단 읽기를 중단합니다.
- 11. 리눅스에서 터치 패드 액세스
- 12. 리눅스에서 웨이브 파일 재생
- 13. 리눅스에서 문제 확인
- 14. 리눅스에서 리소스 관리
- 15. 리눅스에서 ODE 코드 컴파일
- 16. 리눅스에서 액션 스크립트 컴파일하기
- 17. 리눅스에서 동적 메모리 관리
- 18. 리눅스에서 MYSQL 데이터에 문제가있다
- 19. 리눅스에서 프로세스 시작 시간
- 20. 리눅스에서 mmap 지속성
- 21. 리눅스에서 프로세스를 죽이는 것
- 22. 리눅스에서 sed를 호출하십시오.
- 23. 리눅스에서 바이너리를 텍스트로 변환
- 24. 리눅스에서 system() 호출 문제
- 25. 리눅스에서 입력 캡처
- 26. 리눅스에서 MemFree를 계산하는 방법
- 27. 리눅스에서 dll을 작성 하시겠습니까?
- 28. POSIX의 timer_create() 리눅스에서 문제
- 29. 리눅스에서 u64 유형을 조작하십시오.
- 30. 리눅스에서 IO 멀티플렉싱
tchar.h는 Windows 전용입니다. 그러나 자신의 tchar.h를 사용하는 것은 매우 간단합니다. – Naaff