std::messages<CharT>:: open, std::messages<CharT>:: do_open
|
헤더 파일에 정의됨
<locale>
|
||
|
public
:
catalog open ( const std:: string & name, const std:: locale & loc ) const ; |
(1) | |
|
protected
:
virtual catalog do_open ( const std:: string & name, const std:: locale & loc ) const ; |
(2) | |
do_open
를 호출합니다.
catalog
타입의 값을 획득합니다(
std::messages_base
에서 상속됨). 이 값은
name
으로 명명된 메시지 카탈로그에서 메시지를 검색하기 위해
get()
에 전달할 수 있습니다. 이 값은
close()
에 전달될 때까지 사용 가능합니다.
목차 |
매개변수
| name | - | 열릴 메시지 카탈로그의 이름 |
| loc | - | 카탈로그에서 메시지를 읽는 데 필요한 추가 패싯(예: 와이드/멀티바이트 변환을 수행하는 std::codecvt )을 제공하는 로케일 객체 |
반환값
catalog
타입의 음수가 아닌 값으로,
get()
및
close()
와 함께 사용할 수 있습니다. 카탈로그를 열 수 없는 경우 음수 값을 반환합니다.
참고 사항
POSIX 시스템에서 이 함수 호출은 일반적으로
catopen()
호출로 변환됩니다. GNU libstdc++에서는
textdomain
을 호출합니다.
실제 카탈로그 위치는 구현에 따라 정의됩니다: 예를 들어 독일 로캘에서 유닉스 유틸리티
'sed'
와 함께 설치된 메시지 카탈로그
"sed"
의 경우, 이 함수 호출로 열리는 파일은
/usr/lib/nls/msg/de_DE/sed.cat
,
/usr/lib/locale/de_DE/LC_MESSAGES/sed.cat
, 또는
/usr/share/locale/de/LC_MESSAGES/sed.mo
일 수 있습니다.
예제
다음 예제는 메시지 검색 방법을 보여줍니다: 일반적인 GNU/Linux 시스템에서는
/usr/share/locale/de/LC_MESSAGES/sed.mo
파일에서 읽어옵니다.
#include <iostream> #include <locale> int main() { std::locale loc("de_DE.utf8"); std::cout.imbue(loc); auto& facet = std::use_facet<std::messages<char>>(loc); auto cat = facet.open("sed", loc); if (cat < 0) std::cout << "Could not open german \"sed\" message catalog\n"; else std::cout << "\"No match\" in German: " << facet.get(cat, 0, 0, "No match") << '\n' << "\"Memory exhausted\" in German: " << facet.get(cat, 0, 0, "Memory exhausted") << '\n'; facet.close(cat); }
가능한 출력:
"No match" in German: Keine Übereinstimmung "Memory exhausted" in German: Speicher erschöpft
참고 항목
웹페이지의 텍스트를 한국어로 번역합니다: HTML 태그나 속성은 번역하지 마십시오. 원래 서식을 유지하십시오.
,
,