Namespaces
Variants

std::codecvt<InternT,ExternT,StateT>:: always_noconv, do_always_noconv

From cppreference.net
ヘッダーで定義 <locale>
(1)
public :
bool always_noconv ( ) const throw ( ) ;
(C++11まで)
public :
bool always_noconv ( ) const noexcept ;
(C++11以降)
(2)
protected :
virtual bool do_always_noconv ( ) const throw ( ) ;
(C++11まで)
protected :
virtual bool do_always_noconv ( ) const noexcept ;
(C++11以降)
1) パブリックメンバー関数。最も派生したクラスのメンバー関数 do_always_noconv を呼び出す。
2) すべての有効な入力に対して do_in() および do_out() std::codecvt_base::noconv を返す場合、 true を返します。

戻り値

true この変換ファセットが変換を実行しない場合、 false それ以外の場合。

変換を行わない特殊化 std:: codecvt < char , char , std:: mbstate_t > true を返します。

注記

この関数は、例えば std::basic_filebuf::underflow および std::basic_filebuf::overflow の実装において、 std::codecvt::in または std::codecvt::out を呼び出す代わりにバルク文字コピーを使用する場合に利用できます。これは、 std::basic_filebuf に設定されたロケールが変換を一切行わないことが既知である場合に適用されます。

#include <iostream>
#include <locale>
int main()
{
    std::cout << "The non-converting char<->char codecvt::always_noconv() returns " 
              << std::boolalpha
              << std::use_facet<std::codecvt<char, char, std::mbstate_t>>(
                    std::locale()
                 ).always_noconv() << '\n'
              << "while wchar_t<->char codecvt::always_noconv() returns "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                    std::locale()
                 ).always_noconv() << '\n';
}

出力:

The non-converting char<->char codecvt::always_noconv() returns true
while wchar_t<->char codecvt::always_noconv() returns false