Me gustaría leer algunos datos de un flujo que tengo usando std::getline
. Debajo de una muestra usando el std::cin
.comprobando la disponibilidad de datos antes de llamar a std :: getline
std::string line;
std::getline(std::cin, line);
Esta es una función de bloqueo es decir, si no hay datos o línea para leerlo ejecución bloques.
¿Sabe si existe una función para verificar la disponibilidad de datos antes de llamar al std::getline
? No quiero bloquear.
¿Cómo puedo verificar si el buffer de flujo está lleno de datos válidos para una llamada exitosa al std::getline
?
Lo que se ve como el código de abajo
if(dataAvailableInStream())
{
std::string line;
std::getline(std::cin, line);
}
Usted dice que no desea bloquear, pero su ejemplo usa std :: cin. Cuéntanos qué intentas lograr y quizás podamos aclarar nuestras respuestas para ser más útiles. – nathan
¡Hola a todos! Tengo un istream de bloqueo. En lo específico, estoy usando la biblioteca POCO para procesos y quiero leer de POCO :: PipeInputStream. Mi pregunta era: 1. Sé que llamar a std :: getline con una secuencia de bloqueo se bloquearía si no hay datos disponibles 2. ¿Qué función llamar para verificar si los datos están disponibles? 3. si NO hay datos disponibles, estoy no va a llamar a std :: getline porque bloquea –
(Esto todavía aparece en los resultados de búsqueda.) Vea mi respuesta aquí: http://stackoverflow.com/a/42264216/1599699 – Andrew