duda2

Iniciado por difel, 5 Mayo 2010, 20:46 PM

0 Miembros y 1 Visitante están viendo este tema.

difel

printf es para lenguaje c cout en c++ pero hacen lo mismo?
sacnf es para c pero es lo misno que el cin de c++?

Akai

grosso modo, si, son las "equivalencias". tienen diferente sintaxis pero el uso viene a ser el mismo.

printf --> cout
scanf --> cin

Que alguien que lo sepa a ciencia cierta me corrija si no es así, pero creo que cin es más "limpia" que scanf.

difel

gracias amigo es que nosotrso solamente programamos en c++

^Winder^

Sí, cin es mas limpia que scanf, porque este último no limpia el buffer.

Yo apoyo la esperanza de Caylees. Frenemos la Leucemia:
www.cayleeshope.com
Libertad conquistada.  (Justicia ;-))

Littlehorse

Cita de: ^Winder^ en  5 Mayo 2010, 22:35 PM
Sí, cin es mas limpia que scanf, porque este último no limpia el buffer.

cin no limpia el buffer tampoco. La diferencia es que si por ejemplo, lees un numero, si luego vuelves a leer otro numero se lee el salto de linea pero se descarta, pero si por ejemplo lees una cadena o un carácter sucede lo mismo que con scanf. Es decir, el salto de linea permanece en buffer en ambos casos.

Igualmente no se pueden comparar, son dos lenguajes distintos, uno es un objeto y el otro es una función. No son comparables salvo a grandes rasgos por lo que no tiene caso ahondar en las diferencias.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

^Winder^

¿Enserio?  :o pensaba que cin sí lo hacía...  :-[ entonces, ¿en C++ también es mejor usar fgets en vez de cin?

Yo apoyo la esperanza de Caylees. Frenemos la Leucemia:
www.cayleeshope.com
Libertad conquistada.  (Justicia ;-))

Littlehorse

fgets se utiliza en C por la posibilidad de pasar la cantidad a leer como argumento. fgets deja el salto de linea en la cadena porque lo considera un carácter valido, pero si el contenido alcanza el final de la cadena el salto de linea también queda en buffer.

Hay otras variantes en C++, por ejemplo, cin.getline, que descarta el salto de linea (también tienes getline para strings)

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

^Winder^

Gracias por la aclaración :) sí, conocía cin.getline y getline, lo que no sabía era que cin no limpiaba el buffer... enfin, siempre se aprende algo nuevo.

:D

Yo apoyo la esperanza de Caylees. Frenemos la Leucemia:
www.cayleeshope.com
Libertad conquistada.  (Justicia ;-))