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

NAME
     std::isprint - std::isprint

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

	Checks if ch is a printable character as classified by the currently in-
     stalled C
	locale.  In the default, "C" locale, the following characters are print-
     able:

	  * digits (0123456789)
	  * uppercase letters (ABCDEFGHIJKLMNOPQRSTUVWXYZ)
	  * lowercase letters (abcdefghijklmnopqrstuvwxyz)
	  * punctuation characters (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)
	  * space (  )

	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 can be printed, zero otherwise.

Notes
	Like all other functions from <cctype>, the behavior of std::isprint  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_isprint(char ch)
      {
	  return std::isprint(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_prints(const std::string& s)
      {
	  return std::count_if(s.begin(), s.end(),
			    // static_cast<int(*)(int)>(std::isprint)	      //
     wrong
			    // [](int c){ return std::isprint(c); }	      //
     wrong
			    // [](char c){ return std::isprint(c); }	      //
     wrong
			       [](unsigned char c){ return std::isprint(c); } //
     correct
			      );
      }

Example
     // Run this code

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

      int main()
      {
	  unsigned char c = '\xa0'; // the non-breaking space in ISO-8859-1

	  std::cout << "isprint(\'\\xa0\', default C locale) returned "
		    << std::boolalpha << (bool)std::isprint(c) << '\n';

	  std::setlocale(LC_ALL, "en_GB.iso88591");
	  std::cout << "isprint(\'\\xa0\', ISO-8859-1 locale) returned "
		    << std::boolalpha << (bool)std::isprint(c) << '\n';
      }

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

See also
	isprint(std::locale) checks if a character is classified as printable by
     a locale
			     (function template)
	iswprint	     checks if a wide character is a printing character
			     (function)
	C documentation for
	isprint

	     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::isprint(3)

home | help