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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::tolower - std::tolower

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

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

	  In the default "C" locale, the following uppercase letters
	  ABCDEFGHIJKLMNOPQRSTUVWXYZ  are  replaced  with respective lowercase
       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
	  Lowercase  version of	ch or unmodified ch if no lowercase version is
       listed in the
	  current C locale.

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

Example
       // Run this code

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

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

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

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

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

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

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

home | help