2017-02-14 6 views
0

파일에 비 라틴어 내용이 포함되어 있으며 UTF8로 인코딩되어 있습니다. 현재 기존 코드는 "fopen"을 사용하여 파일을 열고 구문 분석 한 다음 비 -Latin 콘텐츠로 내 validate 함수를 호출하고 데이터를 char*으로 전달합니다.utf8로 인코딩 된 char * 배열 처리

void validate(const char* str) 
{ 
    .... 
} 

char 배열에 대한 유효성 검사를해야합니다.

응용 프로그램이 Sun C++ 5.11을 사용하며, unicode을 지원하지 않는다고 생각합니다. (나는 썬 C++ 5.11에서 유니 코드 지원을 시도했는데, 유니 코드 지원에 대한 적절한 조언을 얻지 못했습니다. 그래서 썬 C++이 유니 코드를 지원하고 프로그램이 컴파일되지 않았는지 확인하는 간단한 프로그램을 작성했습니다).

char* 입력에 대한 유효성 검사는 어떻게합니까? wchar_t을 사용하면 가능합니까?

+0

모두는 "유효성 검사"가 의미하는 바에 달려 있습니다 ... 어떻게 텍스트의 "유효성을 검사"해야합니까? 귀하의 기능을 구축하기위한 요구 사항은 무엇입니까? –

+0

특수 문자가 있는지 확인해야합니다 ('Æ', 'Ð'와 비교할 때 비 라틴 문자가 필요함), 연속 공백이 있어야합니다. – NJMR

+0

[이 오래된 질문] (http://stackoverflow.com/questions/313555/light-c-unicode-library) 도움이 될까요? –

답변

1

응용 프로그램은 <compiler>를 사용하는 나는 생각하지 않습니다 지원 유니 코드

이 문제가되지 않습니다. 코드에 유니 코드 문자열 리터럴을 포함하거나 유니 코드 문자 유형을 UTF-16 또는 UTF-32로 나타내려면 유니 코드에 대한 컴파일러 지원 만 필요합니다. 유니 코드는 UTF-8이며 사용자 입력에서 유래하므로 유니 코드 컴파일러 지원이 필요하지 않습니다.

char* 입력의 유효성 검사는 어떻게합니까?

C++ 표준 라이브러리에는 유니 코드 처리 도구가 거의 없습니다. 제공된 도구는 주로 다른 유니 코드 형식 간의 변환으로 이루어져 있으며 심지어 C++ 11 이전에는 이러한 도구도 사용할 수 없었습니다.

대부분 입출력은 단지 바이트 복사이므로,이를 수행하는 데 중요한 처리가 필요하지 않습니다. 다른 처리 (아마도 "유효성 검사"에 필요한)를 위해서는 도구를 직접 구현하거나 타사 도구를 사용해야합니다. 이 wchar_t를 사용하여 가능 http://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf

인가 : 당신이 자신을 구현하도록 선택할 경우 유니 코드 표준의 ~ 1000 페이지를 참조해야합니까?

wchar_t은 네이티브 와이드 문자 유형으로 시스템의 네이티브 와이드 문자 인코딩에 사용됩니다. UTF-8은 넓은 코드 단위를 사용하지 않습니다.

+0

나는 잘못된 문자 목록을 텍스트 파일에 저장하려고 계획하고 있으며 인코딩은 utf8이 될 것입니다. 그런 다음 char 배열의 내용을 읽고이 배열에 대해 유효성 검사를 수행합니다. – NJMR