Confusión de Programación: Los inicios en C++ versión 2
Oh my gatitos, al parecer
std::cin.sync();
no es portable así que no me limpia el buffer en linux.
Había estado usando
std::cin.get();
para pausar mis programas al final pero como el
std::cin.sync();
ya no me sirve busque en google y hasta el momento la solución que he encontrado hasta ahora es la siguiente:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Pero al principio del código se usa la libreria limits así que escribimos al comienzo
#include <limits>
No puedo explicarles realmente lo que hace esto ya que esta fuera de mis conocimientos, pero lo que entiendo hasta el momento es que ignore precisamente ignora cierta cantidad de datos, si pones algo como por ejemplo
std::cin.ignore(10, '\n');
Ignorará los primeros 10 caracteres que estén en el buffer pero que pasa si hay mas de 10? o de algún numero por ejemplo 100, etc?
Para eso sirve el
std::numeric_limits<std::streamsize>::max()
el cual limpia completamente todo lo que cabe
entonces un ejemplo de un hola mundo…
#include <iostream>
#include <limits>
int main()
{
std::cout << "Hola Mundo" << std::endl;
std::cin.ignore(std::numeric_limits::max(), '\n');
std::cin.get();
return 0;
}
Ahora si se pausa ;D
Nota: Este código fue probado en GNU/Linux y compilado en Geany, no puedo garantizar que funcione en Windows pero si funcionara entonces dejen un comentario al respecto ;D puede que le sirva también a otras personas y por cierto que hasta donde sé todo lo aquí escrito sigue los estándares así que usen dev-C++.
Comments(1)



