Eu ja sei que para converter letra em maiúsculo basta usarmos a função toupper() ; mas para converter uma string a função não funcionou, como poderia fazer?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Eu ja sei que para converter letra em maiúsculo basta usarmos a função toupper() ; mas para converter uma string a função não funcionou, como poderia fazer?
Olá. Tente isto:
#include <stdio.h>
#include <ctype.h>
void ucase(char* s) {
while(*s++) {
*s = toupper(*s);
}
}
int main(void) {
char frase[100] = "Quero esta frase em uppercase!";
ucase(frase);
printf("Resultado: [%s]\n", frase);
return 0;
}
Olá, tudo bem? Também tive essa dúvida e tem de várias formas de "uppar" uma string. Achei mais fácil esse:
cout << "Digite a nova palavra." << endl;
string nova_palavra;
cin >> nova_palavra;
for(char & c : nova_palavra){
c = toupper(c);
}
cout << "Resultado: " << nova_palavra << endl;seria o mesmo formato do for igual da aula... Mas por alguma razão só funciona com e comercial (&) para uppar cada letra.
O toupper( ) só deixa letra/char em maiúsculo e se perde quando pedimos para fazer com string, então precisa fazer o laço de repetição para uppar cada letra da String.
Outro jeito:
cout << "Digite a nova palavra em letras maiúsculas." << endl;
string nova_palavra;
cin >> nova_palavra;
for_each(nova_palavra.begin(), nova_palavra.end(), [](char &c)
{ c = ::toupper(c); });
cout << "Resultado: " << nova_palavra << endl;Esse precisa do #include <algorithim>