Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ctype<CharT>::is,std::ctype<CharT>::do_is

      From cppreference.com
      <cpp‎ |locale‎ |ctype
       
       
       
      Localization library
       
       
      Defined in header<locale>
      public:
      bool is( mask m, CharT c)const;
      (1)
      public:
      const CharT* is(const CharT* low,const CharT* high, mask* vec)const;
      (2)
      protected:
      virtualbool do_is( mask m, CharT c)const;
      (3)
      protected:
      virtualconst CharT* do_is(const CharT* low,const CharT* high, mask* vec)const;
      (4)
      1,2) Public member function, calls the protected virtual member functiondo_is of the most derived class.
      3) Checks if the characterc is classified by the maskm.
      4) For every character in the character array[lowhigh), identifies the complete classification mask (e.g.digit|xdigit|alnum|print|graph for the digit'0' in the default locale), and stores the masks in the corresponding elements of the array pointed to byvec.

      Contents

      [edit]Parameters

      c - character to classify
      m - mask to use for classifying a single character
      low - pointer to the first character in an array of characters to classify
      high - one past the end pointer for the array of characters to classify
      vec - pointer to the first element of the array of masks to fill

      [edit]Return value

      1,3)true ifc is classified bym.
      2,4)high

      [edit]Example

      Run this code
      #include <cstddef>#include <iostream>#include <locale>#include <utility>#include <vector> // utility wrapper to make locale-bound facets destructibletemplate<class Facet>struct deletable_facet: Facet{template<class ...Args>    deletable_facet(Args&& ...args): Facet(std::forward<Args>(args)...){}    ~deletable_facet(){}}; int main(){// classify a single character using the default localeauto& f=std::use_facet<std::ctype<char>>(std::locale());char c='0';if(f.is(std::ctype_base::digit, c))// or isdigit(c, locale());std::cout<<'\''<< c<<"' is a digit\n"; // classify every character in a string using a named locale    deletable_facet<std::ctype_byname<wchar_t>> f2("en_US.utf8");std::wstring str= L"z\u00df\u6c34\U0001d10b";std::vector<std::ctype_base::mask> vec(str.size());    f2.is(&str[0],&str[0]+ str.size(),&vec[0]); for(std::size_t n=0; n< str.size();++n){std::cout<<std::hex<<"U+"<<static_cast<wint_t>(str[n])<<" is: ";if(vec[n]&std::ctype_base::alnum)std::cout<<"alnum";if(vec[n]&std::ctype_base::punct)std::cout<<"punct";std::cout<<'\n';}}

      Output:

      '0' is a digitU+7a is: alnum U+df is: alnum U+6c34 is: alnum U+1d10b is: punct

      [edit]See also

      classifies a character or a character sequence, using the classification table
      (public member function ofstd::ctype<char>)[edit]
      classifies a wide character according to the specifiedLC_CTYPE category
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/locale/ctype/is&oldid=160116"

      [8]ページ先頭

      ©2009-2025 Movatter.jp