¿Cuál es la diferencia entre cin.ignore
y cin.sync
?La diferencia entre cin.ignore y cin.sync
Respuesta
cin.ignore
descarta caracteres, hasta el número especificado, o hasta que se alcanza el delimitador (si está incluido). Si lo llamas sin argumentos, descarta un carácter del buffer de entrada.
Por ejemplo, cin.ignore (80, '\n')
ignoraría 80 caracteres, o tantos como encuentre hasta que llegue a una nueva línea.
cin.sync
descarta todos los caracteres no leídos del búfer de entrada. Sin embargo, no se garantiza que lo haga en cada implementación. Por lo tanto, ignore
es una mejor opción si quiere consistencia.
cin.sync()
borraría lo que queda. El único uso que se me ocurre para sync()
que no se puede hacer con ignore
es un reemplazo para system ("PAUSE");
:
cin.sync(); //discard unread characters (0 if none)
cin.get(); //wait for input
Con cin.ignore()
y cin.get()
, esto podría ser un poco de una mezcla:
cin.ignore (std::numeric_limits<std::streamsize>::max(),'\n'); //wait for newline
//cin.get()
Si le sobraba una nueva línea, simplemente poner ignore
parecerá omitirla. Sin embargo, al poner ambos esperará dos entradas si no hay línea nueva. Desechar todo lo que no se lee resuelve ese problema, pero nuevamente, no es consistente.
- 1. La diferencia entre $ * y $ @
- 2. diferencia entre la especulación y la predicción
- 3. Diferencia entre objeto y *?
- 4. Diferencia entre. y #
- 5. Diferencia entre & y &
- 6. VBA: Diferencia entre y y +
- 7. MySQL: diferencia entre ', `,' y"
- 8. ¿Diferencia entre == y caso?
- 9. La diferencia entre MousEventArgs.Location y Cursor.Position
- 10. La diferencia entre 'AND' y '&&' en SQL
- 11. Diferencia entre la clase abstracta y Rasgo
- 12. La diferencia entre unsigned long y UINT64
- 13. diferencia entre el reenvío y la redirección
- 14. ¿Cuál es la diferencia entre {0} y ""?
- 15. Cuál es la diferencia entre = y: =
- 16. Python: La diferencia entre usar "y "
- 17. La diferencia entre Symfony y Silex
- 18. ¿Cuál es la diferencia entre .ToString (+) y ""
- 19. Diferencia entre esto y la base
- 20. Cuál es la diferencia entre $ (...) y `...`
- 21. ¿cuál es la diferencia entre:.! y: r !?
- 22. ¿Cuál es la diferencia entre ".equals" y "=="?
- 23. ¿Cuál es la diferencia entre dict() y {}?
- 24. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 25. Diferencia entre la colección y el contenedor
- 26. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 27. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 28. ¿Cuál es la diferencia entre + = y = +?
- 29. Diferencia entre la propiedad y método
- 30. GeoDjango, la diferencia entre dwithin y distance_lt?
me puedes mostrar implementaciones específicas que cin.sync no es seguro! – 5fox
@ 5fox: Puedo mostrarle implementaciones donde no hace nada: http://ideone.com/AR8lB –
ignore() debe llamarse antes que cin o después de cin? Para ser específico, la primera vez que voy por cin, ¿necesito echar datos no deseados en el búfer, si hay alguno? ¿O programará el lavado de todo cuando se ingrese main? Pero lo que noté es que si llamamos a ignorar(), espera algún carácter de espacio no blanco por primera vez. – Rajesh