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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::toupper - std::toupper

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

	  Converts the given character to uppercase according to the character
       conversion
	  rules	defined	by the currently installed C locale.

	  In the default "C" locale, the following lowercase letters
	  abcdefghijklmnopqrstuvwxyz  are  replaced  with respective uppercase
       letters
	  ABCDEFGHIJKLMNOPQRSTUVWXYZ.

Parameters
	  ch - character to be converted. If the value of  ch  is  not	repre-
       sentable	as unsigned
	       char and	does not equal EOF, the	behavior is undefined.

Return value
	  Converted  character or ch if	no uppercase version is	defined	by the
       current C
	  locale.

Notes
	  Like all other functions from	<cctype>, the behavior of std::toupper
       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:

	char my_toupper(char ch)
	{
	    return	   static_cast<char>(std::toupper(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:

	std::string str_toupper(std::string s) {
	    std::transform(s.begin(), s.end(), s.begin(),
			//  static_cast<int(*)(int)>(std::toupper)	    //
       wrong
			//  [](int  c){	return std::toupper(c);	}	    //
       wrong
			// [](char c){ return std::toupper(c);	}	    //
       wrong
			   [](unsigned	char  c){ return std::toupper(c); } //
       correct
			  );
	    return s;
	}

Example
       // Run this code

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

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

	    std::setlocale(LC_ALL, "en_US.iso88591");
	    std::cout << std::hex << std::showbase;
	    std::cout << "in iso8859-1,	toupper('0xb8')	gives "	<<  std::toup-
       per(c) << '\n';
	    std::setlocale(LC_ALL, "en_US.iso885915");
	    std::cout << "in iso8859-15, toupper('0xb8') gives " << std::toup-
       per(c) << '\n';
	}

Output:
	in iso8859-1, toupper('0xb8') gives 0xb8
	in iso8859-15, toupper('0xb8') gives 0xb4

See also
	  tolower	       converts	a character to lowercase
			       (function)
			       converts	 a  character  to  uppercase using the
       ctype facet of a
	  toupper(std::locale) locale
			       (function template)
	  towupper	       converts	a wide character to uppercase
			       (function)

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

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

home | help