Solaris 9 환경은 두 개의 API 세트를 제공합니다.
멀티바이트(파일 코드)
넓은 문자(프로세스 코드)
와이드캐릭터는 논리적 엔티티로서 고정폭의 단위입니다. 따라서, 멀티바이트 문자를 사용할 때처럼 계속해서 문자의 경계를 추적해야 할 필요가 없습니다.
프로그램이 파일로부터 입력을 받을 때 fscanf(3S) 및 fwscanf(3S)와 같은 입력 함수로 직접 파일의 멀티바이트 데이터를 넓은 문자 프로세스 코드로 변환하거나 입력 후 mbtowc(3C) 및 mbsrtowcs(3C)를 사용하여 변환할 수 있습니다. 넓은 문자 형식에서 멀티바이트 문자 형식으로 출력 데이터를 변환하려면 fwprintf(3S) 및 fprintf(3S)와 같은 출력 함수를 사용하거나 출력 후 wctomb(3C) 및 wcsrtombs(3C)와 같은 변환 함수를 적용하십시오.
이 장의 나머지 표는 Solaris 9 제품에 포함된 국제화 API에 대해 설명합니다.
다음 표는 libc의 메시지 처리 함수 API를 설명합니다.
표 2–1 libc의 메시지 처리 함수
라이브러리 루틴 |
설명 |
---|---|
catclose() |
메시지 카탈로그 닫기 |
catgets() |
프로그램 메시지 읽기 |
catopen() |
메시지 카탈로그 열기 |
dgettext() |
도메인을 지정하여 메시지 카탈로그에서 메시지 얻기 |
dcgettext() |
도메인과 범주를 지정하여 메시지 카탈로그에서 메시지 얻기 |
textdomain() |
현재 도메인을 설정 및 질의 |
bindtextdomain() |
메시지 도메인에 대한 경로 바인드 |
gettext() |
메시지 데이터베이스에서 텍스트 문자열 검색 |
다음 표는 libc의 코드 변환 기능 API를 설명합니다.
표 2–2 libc의 코드 변환
라이브러리 루틴 |
설명 |
---|---|
iconv() |
코드 변환 |
iconv_close() |
변환 설명자 할당 해제 |
iconv_open() |
변환 설명자 할당 |
다음 표는 libc의 정규 표현식 API를 설명합니다.
표 2–3 libc의 정규 표현식
라이브러리 루틴 |
설명 |
---|---|
regcomp() |
정규식 컴파일 |
regexec() |
정규식 매칭 실행 |
regerror() |
오류 코드에서 오류 메시지로의 매핑을 제공 |
regfree() |
regcomp()가 할당한 사용 가능 메모리 |
fnmatch() |
파일 이름 또는 경로 이름 일치 |
다음 표는 libc의 넓은 문자 함수 API를 설명합니다.
표 2–4 libc의 넓은 문자 클래스
라이브러리 루틴 |
설명 |
---|---|
wctype() |
문자 클래스 정의 |
wctrans() |
문자 매핑 정의 |
다음은 libc의 로켈 수정 및 질의를 나열합니다.
표 2–5 libc의 로켈 수정 및 질의
라이브러리 루틴 |
설명 |
---|---|
setlocale() |
프로그램의 로켈 수정 및 질의 |
다음 표는 libc의 로켈 데이터 질의를 나열합니다.
표 2–6 libc의 로켈 데이터 질의
라이브러리 루틴 |
설명 |
---|---|
nl_langinfo() |
현재 로켈의 언어 및 문화 정보 얻기 |
localeconv() |
현재 로켈의 통화 및 숫자 형식 정보 얻기 |
다음 표는 libc의 문자 분류 함수 API를 설명합니다.
표 2–7 libc의 문자 분류 및 자역
라이브러리 루틴 |
설명 |
---|---|
isalpha() |
문자가 알파벳인가? |
isupper() |
문자가 대문자인가? |
islower() |
문자가 소문자인가? |
isdigit() |
문자가 숫자인가? |
isxdigit() |
문자가 16진수인가? |
isalnum() |
문자가 알파벳인가 숫자인가? |
isspace() |
문자가 공백인가? |
ispunct() |
문자가 구두점인가? |
isprint() |
문자가 인쇄 가능한가? |
iscntrl() |
문자가 제어 문자인가? |
isascii() |
문자가 ASCII 문자인가? |
isgraph() |
문자가 가시 문자인가? |
isphonogram() |
넓은 문자가 표음 문자인가? |
isideogram() |
넓은 문자가 표의 문자인가? |
isenglish() |
영어 알파벳의 넓은 문자가 추가 코드 세트에 왔는가? |
isnumber() |
넓은 문자가 추가 코드 세트의 숫자인가? |
isspecial() |
특수 넓은 문자가 추가 코드 세트에 있는가? |
iswalpha() |
넓은 문자가 알파벳인가? |
iswupper() |
넓은 문자가 대문자인가? |
iswlower() |
넓은 문자가 소문자인가? |
iswdigit() |
문자가 숫자인가? |
iswxdigit() |
넓은 문자가 6진수인가? |
iswalnum() |
넓은 문자가 알파벳 문자인가 숫자인가? |
iswspace() |
넓은 문자가 빈 공백인가? |
iswpunct() |
넓은 문자가 구두점인가? |
iswprint() |
넓은 문자가 인쇄 가능 문자인가? |
iswgraph() |
넓은 문자가 가시 문자인가? |
iswcntrl() |
넓은 문자가 제어 문자인가? |
iswascii() |
넓은 문자가 ASCII 문자인가? |
toupper() |
소문자를 대문자로 변환합니다. |
tolower() |
대문자를 소문자로 변환합니다. |
towupper() |
소문자 넓은 문자를 대문자로 변환합니다. |
towlower() |
대문자 넓은 문자를 소문자로 변환합니다. |
towctrans() |
넓은 문자 매핑 |
다음 표는 libc의 문자 조합 함수 API를 설명합니다.
표 2–8 libc의 문자 조합
라이브러리 루틴 |
설명 |
---|---|
strcoll() |
문자열 조합 |
strxfrm() |
비교를 위해 문자열 변환 |
wcscoll() |
넓은 문자열 조합 |
wcsxfrm() |
비교를 위해 넓은 문자열 변환 |
다음 표는 libc의 통화 처리 함수 API를 설명합니다.
표 2–9 libc의 통화 형식
라이브러리 루틴 |
설명 |
---|---|
localeconv() |
현재 로켈의 통화 형식 정보 얻기 |
strfmon() |
통화 값을 문자열 표현으로 변환 |
다음 표는 libc의 날짜 및 시간 형식을 설명합니다.
표 2–10 libc의 날짜 및 시간 형식
라이브러리 루틴 |
설명 |
---|---|
getdate() |
사용자 형식 날짜 및 시간을 변환 |
strftime() |
날짜 및 시간을 문자열 표현으로 변환 %u 변환 함수는 X/Open CAE Specification, System Interfaces and Headers, Issue 4, 버전 2를 준수합니다. 이 함수는 10진수 [1,7]로 주일을 표현하고 1이 현재 월요일을 나타냅니다. |
strptime() |
날짜 및 시간 변환 |
다음 표는 libc의 멀티바이트 처리 함수 API를 설명합니다.
표 2–11 libc의 멀티바이트 처리
라이브러리 루틴 |
설명 |
---|---|
btowc() |
단일바이트를 넓은 문자로 변환 |
mbrlen() |
문자의 바이트 수 얻기(다시 시작 가능) |
mbsinit() |
변환 객체 상태 결정 |
mbrtowc() |
문자를 넓은 문자 코드로 변환(다시 시작 가능) |
mbsrtowcs() |
문자열을 넓은 문자열로 변환(다시 시작 가능) |
mblen() |
문자의 바이트 수 얻기 |
mbtowc() |
문자를 넓은 문자 코드로 변환 |
mbstowcs() |
문자열을 넓은 문자열로 변환 |
다음 표는 libc의 넓은 문자 및 문자열 처리를 설명합니다.
표 2–12 libc의 넓은 문자 및 문자열 처리
라이브러리 루틴 |
설명 |
---|---|
wcsncat() |
넓은 문자를 길이 n으로 연결 |
wsdup() |
넓은 문자열 중복 |
wcscmp() |
넓은 문자열 비교 |
wcsncmp() |
넓은 문자를 길이 n과 비교 |
wcscpy() |
넓은 문자열 복사 |
wcsncpy() |
넓은 문자를 길이 n으로 복사 |
wcschr() |
넓은 문자열에서 문자 찾기 |
wcsrchr() |
오른쪽부터 넓은 문자열에서 문자 찾기 |
wcslen() | 넓은 문자열 길이 얻기 |
wscol() |
넓은 문자열의 표시 너비 반환 |
wcsspn() |
다른 넓은 문자열에 있는 하나의 넓은 문자열 범위 반환 |
wcscspn() |
다른 넓은 문자열에 없는 하나의 넓은 문자열 범위 반환 |
wcspbrk() |
다른 넓은 문자열에 없는 하나의 넓은 문자열 포인터 반환 |
wcstok() |
넓은 문자열을 통해 토큰 이동 |
wscwcs() |
넓은 문자열에서 문자열 찾기 |
wcstombs() |
넓은 문자열을 멀티바이트 문자열로 변환 |
wctomb() |
넓은 문자를 멀티바이트 문자로 변환 |
wcwidth() |
넓은 문자의 열 위치 수 결정 |
wcswidth() |
넓은 문자열의 열 위치 수 결정 |
wctob() |
넓은 문자를 단일바이트로 변환 |
wcrtomb() |
넓은 문자를 문자로 변환(다시 시작 가능) |
wcstol() |
넓은 문자열을 긴 정수로 변환 |
wcstoul() |
넓은 문자열을 부호없는 긴 정수로 변환 |
wcstod() |
넓은 문자열을 배정도로 변환 |
wcsrtombs() |
넓은 문자열을 문자열로 변환(다시 시작 가능) |
wcscat() |
넓은 문자열 연결 |
다음 표는 libc의 형식화된 넓은 문자 입출력을 설명합니다.
표 2–13 libc의 형식화된 넓은 문자 입출력
라이브러리 루틴 |
설명 |
---|---|
wsprintf() |
형식에 따라 넓은 문자열 생성 |
wsscanf() |
형식화된 입력 변환 |
fwprintf() |
형식화된 넓은 문자 출력 인쇄 |
fwscanf() |
형식화된 넓은 문자 입력 변환 |
wprintf() |
형식화된 넓은 문자 출력 인쇄 |
wscanf() |
형식화된 넓은 문자 입력 변환 |
swprintf() |
형식화된 넓은 문자 출력 인쇄 |
swscanf() |
형식화된 넓은 문자 입력 변환 |
vfwprintf() |
stdarg 인자 목록의 넓은 문자 형식화된 출력 |
vswprintf() |
stdarg 인자 목록의 넓은 문자 형식화된 출력 |
이 표는 libc의 넓은 문자열 함수 API를 설명합니다.
표 2–14 넓은 문자열libc
라이브러리 루틴 |
설명 |
---|---|
wscasecmp() |
넓은 문자열을 비교하고 대소문자 차이를 무시 |
wsncasecmp() |
코드 문자열 작업 프로세스 |
wcsstr() |
넓은 문자열 부속 문자열 찾기 |
wmemchr() |
메모리의 넓은 문자 찾기 |
wmemcmp() |
메모리의 넓은 문자 비교 |
wmemcpy() |
메모리의 넓은 문자 복사 |
wmemmove() |
겹친 영역이 있는 메모리의 넓은 문자 복사 |
wmemset() |
메모리의 넓은 문자 설정 |
다음 표는 libc의 넓은 문자 입출력을 설명합니다.
표 2–15 libc의 넓은 문자 입출력
라이브러리 루틴 |
설명 |
---|---|
fgetwc() |
스트림에서 멀티바이트 문자를 얻어 넓은 문자로 변환 |
getwchar() |
stdin에서 멀티바이트 문자를 얻어 넓은 문자로 변환 |
fgetws() |
스트림에서 멀티바이트 문자열을 얻어 넓은 문자로 변환 |
getws() |
stdin에서 멀티바이트 문자열을 얻어 넓은 문자로 변환 |
fputwc() |
넓은 문자열을 멀티바이트 문자로 변환하여 스트림에 넣기 |
fwide() |
스트림 방향 설정 |
putwchar() |
넓은 문자열을 멀티바이트 문자로 변환하여 stdin에 넣기 |
fputws() |
넓은 문자를 멀티바이트 문자열로 변환하여 스트림에 넣기 |
putws() |
넓은 문자를 멀티바이트 문자열로 변환하여 stdin에 넣기 |
ungetwc() |
넓은 문자를 입력 스트림으로 푸시백 |