El artículo 'Simplificando el empleo de std::cin' publicado originalmente en febrero de 2019 ha sido reescrito de forma sustancial, proporcionando una pequeña biblioteca para C++20 que facilita la adquisición de datos desde la terminal. Puede accederse a él pinchando sobre el enlace anterior.
El post actualizado incluye la implementación de tres funciones genéricas:
- terminal::prompt: Imprime un mensaje en la terminal y aguarda a que el usuario introduzca el dato solicitado. Si el input es válido, éste es almacenado en una variable capturada por referencia. En caso contrario, vuelve a solicitarse el dato. Opcionalmente, es posible proporcionar una condición que deba ser satisfecha por el input.
- terminal::prompt_init: Una función auxiliar similar a la anterior que inicializa ella misma por defecto una variable del tipo a leer y procede a su lectura por la terminal.
- terminal::prompt_loop: Extiende la lista de argumentos de prompt() con una palabra clave centinela configurable por el programador, capaz de interrumpir bucles for y while.
A modo de ejemplo:
auto d = 0.0;
terminal::prompt("Insert a double > 0.0: ", d, [](auto a){ return a > 0.0; });
auto const s = terminal::prompt_init<string>("Insert a non-empty string: ",
[](auto const& w){ return !w.empty(); });
No hay comentarios:
Publicar un comentario