저는 내부적으로나 고객이 사용할 라이브러리를 작성하고 있으며 유니 코드와 ASCII를 모두 지원하는 가장 좋은 방법이 무엇인지 궁금합니다. 그렇습니다, 나는 매크로의 거대한 팬이 아니에요 동안C++에서 유니 코드와 ASCII를 모두 지원하는 라이브러리를 만드는 가장 좋은 방법은 무엇입니까?
#ifdef _UNICODE
#define CString CStringW
#else
#define CString CStringA
#endif
: 그것은합니다 (MFC 라이브러리에) 마이크로 소프트과 같은 매크로를 사용하여 헤더 파일이 비슷한을 모두 유니 코드와 ASCII 클래스를 작성하고 수행 작업.
#ifdef _UNICODE
#define GetLastErrorString GetLastErrorStringW
#else
#define GetLastErrorString GetLastErrorStringA
#endif
std::string GetLastErrorStringA();
std::wstring GetLastErrorStringW();
아니면 그냥 별도의 라이브러리를 해제해야합니다, ASCII 다른 하나는 유니 코드를 하나 내가 STL을 사용하여 라이브러리를 쓰고 있어요 경우,이 같은 것들을 포함 된 헤더를 작성하는 의미가 무엇입니까?
사람들이 생각하는 것이이 상황에서 가장 좋은 방법인지 궁금합니다.
UPDATE : 일부의 의견과 질문을 주소는 :
- 다음은 C++ 클래스 라이브러리 될 것입니다.
- 아시아 문자 집합을 지원하기 위해 UTF-16 인코딩을 사용해야한다고 생각합니다.
- 유니 코드 구현의 이유는 두 가지입니다. 1) 모든 새 SDK가 유니 코드를 지원하며 향후 SDK 또는 타사 라이브러리가 향후 별도의 ASCII 버전을 지원할 것이라고 확신하지 못합니다. 2) 응용 프로그램을 완전히 국제화하지는 않지만 사용자 입력 (이름 등) 및 아시아 문자가 포함 된 경로에서로드하는 파일을 처리 할 수 있으면 좋을 것입니다.
플랫 C 스타일 API 또는 C++ 클래스 세트를 개발하고 있습니까? – Michael
예제에 문제가 있습니다. 메서드의 반환 유형을 별칭으로 지정해야합니다. 메서드 자체가 컴파일되지 않을 가능성이 있습니다 (메서드 구현시 #define을 사용해야 할 수도 있지만).). –
제 경험상 아시아 (CJK) 문자에는 UTF-16을 사용할 필요가 없습니다. 내 프로그램은 멀티 바이트 UTF-8 whitout 모든 종류의 마법으로 그들을 잘 처리합니다. – akaltar