Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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

NAME
       std::isgraph - std::isgraph

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

	  Checks  if the given character is graphic (has a graphical represen-
       tation) as
	  classified by	the currently installed	C locale. In the default C lo-
       cale, the
	  following characters are graphic:

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

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

Parameters
	  ch - character to classify

Return value
	  Non-zero value if the	character has a	graphical representation char-
       acter, zero
	  otherwise.

Notes
	  Like all other functions from	<cctype>, the behavior of std::isgraph
       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
       argument	should
	  first	be converted to	unsigned char:

	bool my_isgraph(char ch)
	{
	    return std::isgraph(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_graphs(const std::string& s)
	{
	    return std::count_if(s.begin(), s.end(),
			      //	static_cast<int(*)(int)>(std::isgraph)
       // wrong
			      //  [](int   c){	 return	  std::isgraph(c);   }
       // wrong
			      //   [](char   c){   return  std::isgraph(c);  }
       // wrong
				 [](unsigned char c){ return  std::isgraph(c);
       } // correct
				);
	}

Example
       // Run this code

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

	int main()
	{
	    unsigned char c = '\xb6'; // the character	in ISO-8859-1

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

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

Output:
	isgraph('\xb6',	default	C locale) returned false
	isgraph('\xb6',	ISO-8859-1 locale) returned true

See also
	  isgraph(std::locale) checks if a character is	classfied as graphical
       by a locale
			       (function template)
	  iswgraph	       checks if a wide	character is a graphical char-
       acter
			       (function)

		 ASCII values		   characters	 iscntrl  isprint  is-
       space   isblank	 isgraph   ispunct  isalnum  isalpha  isupper  islower
       isdigit	isxdigit
	decimal	  hexadecimal	  octal			    iswcntrl  iswprint
       iswspace	iswblank iswgraph iswpunct iswalnum iswalpha iswupper iswlower
       iswdigit	 iswxdigit  08	    \x0\x8   \0\10    control codes    0     0
       0	 0	   0	     0	       0	 0	   0	     0
       0	0
					 (NUL,	   etc.)      9		   \x9
       \11	   tab (\t)	    0	  0	    0	    0	   0	     0
       0	0	 0	  0	   0	    0
					 whitespaces  1013    \xA\xD	\12\15
       (\n, \v,	\f,	0     0		0      0	 0	   0	     0
       0	0	 0	  0	   0
					 \r)  1431   \xE\x1F  \16\37   control
       codes	0     0	       0	0	 0	  0	   0	     0
       0	 0	   0	     0 32	 \x20	     \40	 space
       0	 0	0      0     0	       0	 0	   0	     0
       0	  0	     0	3347	\x21\x2F  \41\57    !"#$%&'()*+,-./  0
       0     0	      0		0	0      0	 0	   0	     0
       0	 0  4857   \x30\x39 \60\71   0123456789	     0	       0     0
       0	 0     0	 0     0	0	  0	     0	     0
       5864    \x3A\x40	 \72\100   :;<=>?@	    0	      0	    0	     0
       0      0	     0	       0	 0	   0	     0	       0  6570
       \x41\x46	 \101\106 ABCDEF	  0	    0	  0	   0	     0
       0	 0	0      0      0		0	   0  7190    \x47\x5A
       \107\132	 GHIJKLMNOP	  0	     0	    0	     0	       0     0
       0      0	     0	   0	    0	     0
					 QRSTUVWXYZ 9196    \x5B\x60  \133\140
       [\]^_`		0	   0	  0	    0	       0       0     0
       0	0	 0	  0	   0 97102  \x61\x66  \141\146	abcdef
       0	  0	 0	   0	      0	     0		0      0     0
       0     0	       0 103122	\x67\x7A \147\172 ghijklmnop	  0	     0
       0	 0	    0	   0	      0	      0	     0	       0     0
       0
					 qrstuvwxyz 123126  \x7B\x7E  \172\176
       {|}~		0	   0	  0	    0	       0       0     0
       0	 0	   0	     0	       0  127	     \x7F	  \177
       backspace	 0	0	 0	  0	   0	    0	     0
       0	0	 0	  0	   0
					 character (DEL)

http://cppreference.com		  2022.07.31		       std::isgraph(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::isgraph&manpath=FreeBSD+Ports+15.0>

home | help