Ir ao conteúdo
  • Cadastre-se
Sh 1

C++ Função toupper em c++

Recommended Posts

Como uso a função toupper em string na linguagem de programação  c++

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da erro na compilação no matching function for call to ‘toupper(std::__cxx11::string&)no matching function for call to ‘toupper(std::__cxx11::string&)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você incluiu a biblioteca <cctype> ? Lá no topo da página do cppreference tem o nome da biblioteca a qual a função toupper pertence.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Sh 1  Olá. Dá uma olhada no código para ver se é isso q você quer:

 

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

char my_toupper(char ch) {
    return toupper(static_cast<unsigned char>(ch));
    //return toupper(ch);
}

string str_toupper(string s) {
    transform(s.begin(), s.end(), s.begin(), ::toupper);
    return s;
}

int main() {

    string texto = "Exemplo de String";

    cout <<  str_toupper(texto) << endl;

    char letra = 'a';

    cout << my_toupper(letra) << endl;

    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, giu_d disse:

@Sh 1  Olá. Dá uma olhada no código para ver se é isso q você quer:

 


#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

char my_toupper(char ch) {
    return toupper(static_cast<unsigned char>(ch));
    //return toupper(ch);
}

string str_toupper(string s) {
    transform(s.begin(), s.end(), s.begin(), ::toupper);
    return s;
}

int main() {

    string texto = "Exemplo de String";

    cout <<  str_toupper(texto) << endl;

    char letra = 'a';

    cout << my_toupper(letra) << endl;

    return 0;
}

 

Poderia simplificar o código usando uma lambda:

string str_toupper(string s) {
    transform(s.begin(), s.end(), s.begin(), [](char c) { return c - 32; });
    return s;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@cyer

3 horas atrás, cyer disse:

Poderia simplificar o código usando uma lambda:


string str_toupper(string s) {
    transform(s.begin(), s.end(), s.begin(), [](char c) { return c - 32; });
    return s;
}

  

Olá. De acordo com essa função q você criou só seria retornado um valor correto se a string fosse composta por letras minúsculas, pois o comando c - 32 é baseado na tabela ASCII. Ou seja: A letra 'a', na tabela ASCII, é representada pelo valor 97, tirando 32 desse valor o mesmo passaria a ser de 65, que seria a letra 'A'. Só que se na string tiver uma letra maiúscula esse cálculo retornaria um valor inesperado, um símbolo ou um número provavelmente

adicionado 56 minutos depois

@cyer  Olá. Sendo sincero, logo q me deparei com esse tópico, esperava q houvesse no C++ uma função própria para converter uma string para letras maiúsculas, tal como a função strupr()  disponível para o C, com o uso da biblioteca <string.h>.

Mas parece q não tem não

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, giu_d disse:

@cyer  Olá. Sendo sincero, logo q me deparei com esse tópico, esperava q houvesse no C++ uma função própria para converter uma string para letras maiúsculas, tal como a função strupr()  disponível para o C, com o uso da biblioteca <string.h>.

Mas parece q não tem não

Talvez isso interesse:

#include <algorithm>
#include <cctype>
#include <functional>

std::string& stoupper( const std::string& s )
  {
  std::string result( s );
  std::transform(
    s.begin(),
    s.end(),
    result.begin(),
    std::ptr_fun <int, int> ( std::toupper )
    );
  return result;
  }

http://www.cplusplus.com/forum/general/21215/

adicionado 2 minutos depois

c++11

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vangodp  É. Já é uma função bem mais interessante q a função q criei acima. Obrigado. 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×