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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::ispunct - std::ispunct

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

	  Checks  if the given character is a punctuation character as classi-
       fied by the
	  current C locale. The	default	C locale classifies the	characters
	  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ as punctuation.

	  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	 punctuation  character,  zero
       otherwise.

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

Example
       // Run this code

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

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

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

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

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

See also
	  ispunct(std::locale) checks if a character is	classified as punctua-
       tion by a locale
			       (function template)
	  iswpunct		checks	if  a  wide character is a punctuation
       character
			       (function)
	  C documentation for
	  ispunct

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

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

home | help