que - convertir una letra en mayuscula c++
c-convierte una cadena de mayúsculas y minúsculas a todas las minúsculas (5)
¿Cuál es la mejor / más limpia forma de convertir una cadena de mayúsculas y minúsculas en minúscula en C?
¿Estás tratando con cadenas ASCII y no tienes problemas con la configuración regional? Entonces sí, esa sería una buena manera de hacerlo.
Está en la biblioteca estándar, y esa es la manera más directa que puedo ver para implementar dicha función. Así que sí, simplemente recorra la cadena y convierta cada carácter a minúscula.
Algo trivial como este:
for(int i = 0; str[i]; i++){
str[i] = tolower(str[i]);
}
o si prefieres uno, puedes usar este de JF Sebastian:
for ( ; *p; ++p) *p = tolower(*p);
Si necesita soporte Unicode en la función minúscula, consulte esta pregunta: Light C Biblioteca Unicode
Si vamos a ser tan descuidados como para usar tolower()
, haga esto:
char blah[] = "blah blah Blah BLAH blAH/0"; int i=0; while(blah[i]|='' '', blah[++i]) {}
Pero, bueno, explota un poco si le das algunos símbolos / números, y en general es malvado. Buena pregunta de entrevista, sin embargo.
para convertir a minúsculas es equivalente al bit de subida 0x60:
for(char *p = pstr;*p;++p) *p=*p>0x40&&*p<0x5b?*p|0x60:*p;
(para latin codepage por supuesto)