
paulo1205
(usa Ubuntu)
Enviado em 30/04/2017 - 22:57h
Pode usar
printf() e
scanf() com liberdade. Eles são parte da biblioteca oficial do C++ também.
A preferência por I/O em C++ é porque ela é ao mesmo tempo mais genérica e mais segura do que aquela feita com as funções herdadas do C, e isso através de uma sintaxe uniforme.
Com
printf(), você só pode fazer operações de escrita de tipos nativos (e, mesmo assim, não todos: todo
float acaba sendo convertido para
double, e inteiros com tamanho menor do que
sizeof(int) são convertidos para
int) e de uns poucos tipos derivados comumente convencionados (como
size_t e strings). Para escrever dados de outros tipos, você teria de criar funções específicas, com nomes distintos. Além do mais, com
printf() você tem de fazer manualmente a correspondência entre os argumentos a serem impressos e os modos como cada um desses argumentos deve ser interpretado e impresso, por meio da string de formatação. Essa correspondência manual não raramente é fonte de erros.
O análogo vale para
scanf(), na hora de realizar operações de entrada (exceto pelo fato de que, por trabalhar com ponteiros, não ocorrem as conversões de tipo indicadas acima; por outro lado, ganha-se a chance de errar o tipo de ponteiro passado à função).
Ao usar a forma C++, você acaba com a string de formatação (e sua interpretação, feita durante a cada execução do programa), substituindo-a por uma análise sintática feita apenas uma vez, durante a compilação, de acordo com o tipo de cada argumento. Além disso, acaba com a limitação de poder usar apenas tipos nativos: por meio do polimorfismo de sobrecarga de operadores, você pode criar funções que permitam fazer a escrita ou leitura de qualquer tipo de dados que você vier a criar.