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  let-
     ters
	ABCDEFGHIJKLMNOPQRSTUVWXYZ.

Parameters
	ch  - character to be converted. If the value of ch is not representable
     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 cur-
     rent 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 argu-
     ment 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); } // cor-
     rect
			);
	  return s;
      }

Example
     // Run this code

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

      int main()
      {
	  unsigned char c = '\xb8'; // the character A3/4 in ISO-8859-15
				    // but A, (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::toupper(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)
	C documentation for
	toupper

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

home | help