Voglio leggere da un flusso utilizzando std::getline
all'interno di un ciclo for.lettura sicura da un flusso in un ciclo for utilizzando getline
Lo stream intendo è una classe ereditata dallo std::basic_iostream
.
std::string line; for(;;){ try{ std::getline(myStreamObj, line); if(line != ""){ std::cout << line << std::endl; } } catch(std::ios_base::failure& ex){ std::cout << ex.what() << std::endl; } }
voglio anche per verificare contro le altre condizioni di errore, come
eofbit failbit badbit
ma sto po 'confuso su di esso.
Se alcune delle condizioni impostate su questi 3 flag sono soddisfatte, si verifica un'eccezione generata come std::ios_base::failure
? Come superare questi 3 casi? Devo fare controlli su altri modi?
Grazie AFG
Grazie per la tua risposta! Non sapevo di questa condizione quindi è utile. Posso farti un altro piccolo dettaglio. Perché le eccezioni non sono una buona scelta qui? –
@Abruzzo Molte ragioni: più lente, non supportano facilmente la ripresa, è necessario scrivere più codice per gestire gli errori. E la maggior parte delle persone che leggono il tuo codice si aspetta che le eccezioni * e * non vengano utilizzate in quest'area, quindi troveranno il codice più difficile da capire. –