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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::isupper - std::isupper

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

	  Checks  if  the given	character is an	uppercase character as classi-
       fied by the
	  currently installed C	locale.	In the default "C" locale,  std::isup-
       per returns a
	  nonzero value	only for the uppercase letters (ABCDEFGHIJKLMNOPQRSTU-
       VWXYZ).

	  If  std::isupper  returns  a	nonzero	 value,	 it is guaranteed that
       std::iscntrl,
	  std::isdigit,	std::ispunct, and std::isspace	return	zero  for  the
       same character in
	  the same C locale.

	  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 an uppercase letter, zero	other-
       wise.

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

Example
       // Run this code

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

	int main()
	{
	    unsigned char c = '\xc6'; // letter	 in ISO-8859-1

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

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

	}

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

See also
	  isupper(std::locale)	checks	if a character is classified as	upper-
       case by a locale
			       (function template)
	  iswupper	       checks if a  wide  character  is	 an  uppercase
       character
			       (function)
	  C documentation for
	  isupper

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

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

home | help