Ir ao conteúdo

Posts recomendados

Postado

Toda função da linguagem C é possível usar na linguagem C++, porém se existir uma alternativa pra essa função na linguagem C++ prefira a função da linguagem C++, não se esqueça que você está programando em C++ e não em C.

 

Alguns motivos para usar sempre funções da linguagem C++ em vez da linguagem C:

 

1 - Melhor otimização do código:

Como é um compilador da linguagem C++ vai utilizar de uma forma melhor os recursos e otimização do compilador se o código for em C++ em vez de C, resultando uma melhor velocidade do código e da aplicação.

 

2 - Maior segurança:

Algumas funções da linguagem C não são seguras, por exemplo, no caso da strcpy:

char nome[10];

strcpy(nome, "Joao Ferreira"); // Está copiando um nome maior que o tamanho que foi reservado para o nome.

 

Se fosse em C++ o problema acima não iria acontecer porque a classe string possui alocação dinâmica, problemas como estouro de memória por exemplo, você não tem que se preocupar, deixa que a classe cuida da alocação de memória para você.

 

Em C++ ficaria bem seguro e até mais fácil de usar:

std::string nome;

// Podemos colocar o nome que for e com quantos caracteres sem se preocupar com problemas diferentemente da strcpy
nome = "Joao Ferreira";
nome = "Maria Ferreira Souza do Nascimento";

 

Outros exemplos de função que não é segura que foram até citadas por você é: printf e scanf

 

scanf por exemplo, é muito comum ter estouros de buffers em strings(char*, char[])

 

3 - Facilidade maior e melhor legibilidade do código:

A linguagem C++ existe varias classes e funções que não existe na linguagem C, você pode usar um índice de como string ou qualquer outro tipo, graças a classe map, exemplo:

std::map<std::string, int> idades;

idades["Joao"] = 20;
idades["Maria"] = 21;
idades["Larissa"] = 30;

 

Na linguagem C você sempre usa indices como inteiro ficando de uma forma bem limitada.

 

------

 

Como eu disse acima, a função printf não é segura, então por isso prefira sempre usar a cout em vez da printf e cin em vez de scanf.

 

Mas se você quiser usar o printf/scan de uma forma segura, existe varias bibliotecas postadas na internet contendo uma uma função de print/scanf muito mais segura que a do C.

 

Uma deles é a tiny format:

https://github.com/c42f/tinyformat

 

  • Curtir 2
  • 2 semanas depois...
Postado

Só para efeito de complementação do tópico, segue abaixo o trecho de um programa que fiz na faculdade em que eu utilizei o 'printf' para conseguir limitar os caracteres impressos no caso, em duas casas decimais, já que o mesmo se trata de um valor financeiro.

 system("cls");
              printf("TOTAL EM HAMBURGUERES   :%2.2f\n",tha);
              printf("TOTAL EM PORC.BAT.FRITAS:%2.2f\n",tbf);
              printf("TOTAL EM REFRIGERANTES  :%2.2f\n",tre);
              printf("TOTAL EM ESPEC. DA CASA :%2.2f\n",tec);
              printf("------------------------------\n");
              printf("TOTAL:                  :%2.2f\n",tt);

 

Não sei se utilizando o 'cout' isso é possível...

  • Curtir 1
Postado

@André Ferreira da Silva  Sim. É possível. Para isso tem funções no C++ como setprecision(), setw()setfill(), e outras para casos assim, q são utilizadas juntamente com o comando cout

Procure pesquisar a respeito.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...