Attualmente ho un programma che legge dallo standard input, a volte il programma deve semplicemente continuare a funzionare se non viene fatto alcun input, di solito questo è uno script di test non c'è 'inserisci' per così dire.std :: getline senza uscita, uscita se nessun input
program -v1 -v2 -v3 <input >output
v1 - v3 sono argomenti della riga di comando rispettivamente
Fondamentalmente il programma sputa fuori gli argomenti della riga di comando e il loro rispettivo significato al programma se non viene dato 'ingresso' e quindi dovrebbe uscire.
Tuttavia al momento se gli danno un file di test vuoto o semplicemente si esegue senza premere invio dopo aver eseguito il blocco su std :: getline che uso per inserire i comandi.
while(std::getline(std::cin,foo)
{do stuff}
dove foo è una stringa.
Come faccio a farlo funzionare solo attraverso e do stuff
almeno una volta quindi l'uscita in caso di nessun input? In caso di ingresso do stuff
si verifica una volta per ogni linea di input standard.
Sarebbe un passaggio a un ciclo do-while, con un assegno ciclo pre sul fatto che è ottenuto alcun input, lavorare?
Qualcosa di simile
if cin empty
set flag
do
{do stuff
check flag}
while(getline)
o non è bloccante non io possibile in C++?
Questa domanda sembra essere rimaneggiata ancora e ancora ma non sono riuscito a trovare una risposta definitiva o addirittura una risposta che fosse indipendente dalla piattaforma (questo programma è di natura accademica, codificato su Windows e testato su Unix).
quindi stai dicendo che vuoi eseguire il ciclo una volta non importa quale, quindi uscire se non viene dato alcun input prima di una chiamata getline? –
possibile duplicato di [verificare la disponibilità dei dati prima di chiamare std :: getline] (http://stackoverflow.com/questions/3317740/checking-data-availability-before-calling-stdgetline) Sfortunatamente, probabilmente non esiste un modo portabile per farlo in C++ standard. – jrok
si può utilizzare alcune funzioni di basso livello da C? – Zaffy