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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::isxdigit - std::isxdigit

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

	  Checks if the	given character	is a hexadecimal numeric character
	  (0123456789abcdefABCDEF).

	  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 is a	hexadecimal numeric character,
       zero otherwise.

Notes
	  std::isdigit and std::isxdigit are the only standard narrow  charac-
       ter classification
	  functions that are not affected by the currently installed C locale.
       although	some
	  implementations (e.g.	Microsoft in 1252 codepage) may	classify addi-
       tional
	  single-byte characters as digits.

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

Example
       // Run this code

	#include <cctype>
	#include <climits>
	#include <iostream>

	int main()
	{
	    for	(int c = 0; UCHAR_MAX >= c; ++c)
		if (isxdigit(c))
		    std::cout << static_cast<char>(c);
	    std::cout << '\n';
	}

Output:
	0123456789ABCDEFabcdef

See also
				checks if a character is classified as a hexa-
       decimal digit by
	  isxdigit(std::locale)	a locale
				(function template)
	  iswxdigit		checks if a wide character  is	a  hexadecimal
       character
				(function)
	  C documentation for
	  isxdigit

	       ASCII values	       characters    iscntrl  isprint  isspace
       isblank	 isgraph  ispunct  isalnum  isalpha  isupper  islower  isdigit
       isxdigit	decimal	hexadecimal    octal			iswcntrl  isw-
       print  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		  2024.06.10		      std::isxdigit(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::isxdigit&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help