Cadena a inferior/superior en C++

Cadena a inferior/superior en C++
#include <algorithm>
std::string data = "Abc";
std::transform(data.begin(), data.end(), data.begin(), ::toupper);

http://notfaq.wordpress.com/2007/08/04/cc-convert-string-to-upperlower-case/

Además, artículo de CodeProject para métodos de cadena comunes:http://www.codeproject.com/KB/stl/STL_string_util.aspx


> std::string data = “Abc”; 
> std::transform(data.begin(), data.end(), data.begin(), ::toupper);

Esto funcionará, pero utilizará la configuración regional estándar "C". Puede usar facetas si necesita obtener un controlador para otra configuración regional. El código anterior que usa facetas sería:

locale loc("");
const ctype<char>& ct = use_facet<ctype<char> >(loc);
transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));

Para los copiadores que esperan usar la respuesta de Nic Strong, tenga en cuenta el error de ortografía en "use_factet" y el tercer parámetro faltante para std::transform:

locale loc("");
const ctype<char>& ct = use_factet<ctype<char> >(loc);
transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));

debería ser

locale loc("");
const ctype<char>& ct = use_facet<ctype<char> >(loc);
transform(str.begin(), str.end(), str.begin(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));