Namespaces
Variants

std::messages<CharT>:: open, std::messages<CharT>:: do_open

From cppreference.net
헤더 파일에 정의됨 <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)
1) 공개 멤버 함수로, 가장 파생된 클래스의 보호된 가상 멤버 함수 do_open 를 호출합니다.
2) 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 태그나 속성은 번역하지 마십시오. 원래 서식을 유지하십시오. ,
,  태그 내부의 텍스트는 번역하지 마십시오.
C++ 관련 용어는 번역하지 마십시오. 정확성과 전문성이 요구됩니다.