名前空間
変種
操作

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

提供: cppreference.com
< cpp‎ | locale‎ | codecvt
 
 
 
 
ヘッダ <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) public メンバ関数。 最も派生したクラスのメンバ関数 do_always_noconv を呼びます。
2) すべての有効な入力に対して do_in() と {{lc|do_out()} がどちらも std::codecvt_base::noconv を返す場合は true を返します。

[編集] 戻り値

この変換ファセットが変換を行わない場合は true、そうでなければ false

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

[編集] ノート

この関数は、例えば std::basic_filebuf::underflowstd::basic_filebuf::overflow の実装で std::basic_filebuf に設定されているロケールがいかなる変換も行わないことが判明している場合に std::codecvt::instd::codecvt::out を呼ぶ代わりにバルク文字コピーを使用するために、使用できます。

[編集]

#include <locale>
#include <iostream>
 
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