home | help
std::iscntrl(3) 	       C++ Standard Libary		 std::iscntrl(3)

NAME
     std::iscntrl - std::iscntrl

Synopsis
	Defined in header <cctype>
	int iscntrl( int ch );

	Checks	if  the  given character is a control character as classified by
     the currently
	installed C locale. In the default, "C" locale, the  control  characters
     are the
	characters with the codes 0x00-0x1F and 0x7F.

	The behavior is undefined if the value of ch is not representable as un-
     signed char
	and is not equal to EOF.

Parameters
	ch - character to classify

Return value
	Non-zero value if the character is a control character, zero otherwise.

Notes
	Like  all other functions from <cctype>, the behavior of std::iscntrl is
     undefined if
	the argument's value is neither representable as unsigned char nor equal
     to EOF. To
	use these functions safely with plain chars (or signed chars), the argu-
     ment should
	first be converted to unsigned char:

      bool my_iscntrl(char ch)
      {
	  return std::iscntrl(static_cast<unsigned char>(ch));
      }

	Similarly, they should not be directly	used  with  standard  algorithms
     when the
	iterator's value type is char or signed char. Instead, convert the value
     to unsigned
	char first:

      int count_cntrls(const std::string& s)
      {
	  return std::count_if(s.begin(), s.end(),
			    // static_cast<int(*)(int)>(std::iscntrl)	      //
     wrong
			    // [](int c){ return std::iscntrl(c); }	      //
     wrong
			    // [](char c){ return std::iscntrl(c); }	      //
     wrong
			       [](unsigned char c){ return std::iscntrl(c); } //
     correct
			      );
      }

Example
     // Run this code

      #include <cctype>
      #include <clocale>
      #include <iostream>

      int main()
      {
	  unsigned char c = '\x94'; // the control code CCH in ISO-8859-1

	  std::cout << "iscntrl(\'\\x94\', default C locale) returned "
		    << std::boolalpha << !!std::iscntrl(c) << '\n';

	  std::setlocale(LC_ALL, "en_GB.iso88591");
	  std::cout << "iscntrl(\'\\x94\', ISO-8859-1 locale) returned "
		    << !!std::iscntrl(c) << '\n';

      }

Possible output:
      iscntrl('\x94', default C locale) returned false
      iscntrl('\x94', ISO-8859-1 locale) returned true

See also
			     checks  if  a  character is classified as a control
     character by a
	iscntrl(std::locale) locale
			     (function template)
	iswcntrl	     checks if a wide character is a control character
			     (function)
	C documentation for
	iscntrl

	     ASCII values	      characters     iscntrl   isprint	 isspace
     isblank   isgraph	 ispunct   isalnum   isalpha   isupper	islower  isdigit
     isxdigit decimal hexadecimal    octal		      iswcntrl	iswprint
     iswspace  iswblank  iswgraph  iswpunct  iswalnum iswalpha iswupper iswlower
     iswdigit iswxdigit  0a8	  \x0a\x8      \0a\10	  control  codes    a  0
     0	       0	 0	  0	   0	    0	     0	      0        0
     0	      0
				   (NUL,   etc.)    9	      \x9	     \11
     tab  (\t)	      a 0	0	 a 0	   a 0	     0	      0        0
     0	      0        0	0	 0
				   whitespaces	 10a13	   \xAa\xD	 \12a\15
     (\n,  \v,	\f,    a 0	 0	  a 0	    0	     0	      0        0
     0	      0        0	0	 0
				   \r)	14a31	 \xEa\x1F     \16a\37	 control
     codes    a  0	 0	  0	   0	    0	     0	      0        0
     0	       0	 0	   0   32	 \x20	       \40	   space
     0	       a  0	   a  0        a  0	   0	     0	      0        0
     0	      0        0	0 33a47   \x21a\x2F   \41a\57	 !"#$%&'()*+,-./
     0	       a  0	   0	     0	       a  0	   a  0       0        0
     0	      0 	0	  0  48a57    \x30a\x39    \60a\71    0123456789
     0	       a  0	   0	     0	       a  0	   0	     a 0       0
     0	      0        a 0	  a  0	58a64	 \x3Aa\x40    \72a\100	 :;<=>?@
     0	       a  0	   0	     0	       a  0	   a  0       0        0
     0	       0	 0	   0  65a70	\x41a\x46     \101a\106   ABCDEF
     0	       a  0	   0	     0	       a  0	  0	   a 0	     a 0
     a 0       0	0	 a 0 71a90    \x47a\x5A    \107a\132  GHIJKLMNOP
     0	       a  0	   0	     0	       a  0	  0	   a 0	     a 0
     a 0       0	0	 0
				   QRSTUVWXYZ  91a96	 \x5Ba\x60     \133a\140
     [\]^_`	      0        a 0	 0	  0	   a 0	     a 0       0
     0	      0        0	0	 0 97a102  \x61a\x66   \141a\146  abcdef
     0	       a  0	   0	     0	       a  0	  0	   a 0	     a 0
     0	      a 0	0	 a 0 103a122  \x67a\x7A    \147a\172  ghijklmnop
     0	       a  0	   0	     0	       a  0	  0	   a 0	     a 0
     0	      a 0	0	 0
				   qrstuvwxyz 123a126 \x7Ba\x7E   \172a\176 {|}~
     0	      a 0	 0	   0	     a	0	 a  0	     0	       0
     0	       0	 0	   0  127      \x7F	    \177       backspace
     a 0       0	0	 0	  0	   0	    0	     0	       0
     0	      0        0
				   character (DEL)

http://cppreference.com 	   2024.06.10			 std::iscntrl(3)

home | help