std::ctype::is(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

okay bestie, welcome to std::ctype::is(3) from the C++ Standard Libary manual. It's giving "character classification, but make it a C++ standard library specialization" and honestly? iconic πŸ’…

πŸ’– NAME πŸ’–

  • std::ctype::is β€” std::ctype::is (yes bestie, the name section is literally the same thing twice; no notes πŸ’–)

✨ Synopsis ✨

Defined in header <locale>

bool is( mask m, char c ) const;

(1)

const char* is( const char* low, const char* high, mask* vec ) const;

(2)

  1. Checks if the character c is classified by the mask m according to the classification table returned by the member function table(). Effectively calculates table()[(unsigned char)c] & m.
  2. For every character in the character array [low, high), reads its full classification mask from the classification table returned by the member function table() (that is, evaluates table()[(unsigned char)*p] and stores it in the corresponding element of the array pointed to by vec.

If (unsigned char)c >= std::ctype<char>::table_size, then an implementation-defined value is substituted instead of table()[(unsigned char)c], possibly different for different values of c.

🫢 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

🌈 Return value 🌈

  1. true if c is classified by m in table(), false otherwise.
  2. high

πŸ’­ Notes πŸ’­

Unlike the primary template std::ctype, this specialization does not perform a virtual function call when classifying characters. To customize the behavior, a derived class may provide a non-default classification table to the base class constructor. slay ✨

πŸŽ€ Example πŸŽ€

This section is incomplete Reason: no example

the page said it, not me 😭

🧚 Defect reports 🧚

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

  • DR: LWG 28
  • Applied to: C++98
  • Behavior as published: overload (2) copied the values from vec into table(), which is the reverse of the intended behavior
  • Correct behavior: corrected

πŸ‘€ See also πŸ‘€

  • do_is β€” classifies a character or a character sequence
  • [virtual] β€” virtual protected member function of std::ctype<CharT>

🏷️ Category 🏷️

  • * Todo no example

That's the whole page, bestie 🫢 big source/version/date kiss from http://cppreference.com, 2024.06.10, on std::ctype::is(3). πŸ’–

πŸ“¦ where this page comes from