# std::messages<CharT>::close, std::messages<CharT>::do_close

< cpp‎ | locale‎ | messages

定义于头文件 `<locale>` |  |
public: void close( catalog c ) const; | (1) |
protected: virtual void do_close( catalog c ) const; | (2) |

1) 公开成员函数，调用最终导出类的受保护虚成员函数 `do_close` 。

2) 释放与从 open() 获得的 `catalog` 类型（继承自 std::messages_base ）值 `c` 所指代的打开目录关联的实现定义资源。

### 参数

c | - | 合法的打开的目录标识符，仍未在其上调用 `close()`

### 返回值

（无）

### 注意

POSIX 系统上，此函数调用通常翻译为调用 `catclose()` 。 GNU libstdc++ 中，它以 GNU `gettext()` 实现，并不做任何事。

### 示例

下列代码演示消息取得：典型的 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

### 参阅