[C++] Dubbio su valore cin

Pubblicità

Mr.Cobra

Nuovo Utente
Messaggi
69
Reazioni
1
Punteggio
26
Sta facendo un programma è ho un dubbio. Voglio capire se io in questa cin inserisco da tastiera false mi cambia il valore della variabile prova? Oppure me la legge come stringa e quindi genera errori? Devo inserire una t o una f o 0 e 1? come devo fare?
C++:
bool prova=true;

cout<<"inserisci il valore: \n";
cin>>prova;
 
Non funzionerà.
Quella che tu chiami è uno dei tanti operatori istream& operator<<(istream&, ...) dove il secondo parametro è un bool. Quell’operatore ha solo un modo di leggere l’input, ovvero in modo numerico.

Ma non è impossibile fargli accettare true e false, basta dargli in pasto il manipolatore boolalpha a cin e tratterà così solo ed esclusivamente true e false.
 
Non funzionerà.
Quella che tu chiami è uno dei tanti operatori istream& operator<<(istream&, ...) dove il secondo parametro è un bool. Quell’operatore ha solo un modo di leggere l’input, ovvero in modo numerico.

Ma non è impossibile fargli accettare true e false, basta dargli in pasto il manipolatore boolalpha a cin e tratterà così solo ed esclusivamente true e false.
Purtroppo non posso usarlo perchè non lo abbiamo fatto nel programma quindi devo giocare solo sull'algoritmo? Cioè se nel buffer è presente una stringa "true" allora mi imposta true la mia variabile prova. Mica mi passeresti qualche link con tutti questi operatori che voglio studiarmeli per conto mio?
--- i due messaggi sono stati uniti ---
Solo un ultimo dubbio con il costruttore non ho alcun problema giusto? Solo con gli stream di input ho problemi?
C++:
 Attivita::Attivita(const int P, const char *D,const bool S): PID(P) : Started(S) { set_Descrizione(D); }
    Attivita::Attivita(const Attivita &A): PID(A.PID) :Started(A.Started) { set_Descrizione(A.Descriione) }
    
    void Descrizione(const char * D){
        Descrizione= new char [strlen(D)+1];
        strcpy(Descrzione,D);
    }

Se io nel main inizializzo un oggetto Attivita così
C++:
Attivita A(1321, Salto, true);
non ho alcun problema?
 
Ultima modifica:
Purtroppo non posso usarlo perchè non lo abbiamo fatto nel programma quindi devo giocare solo sull'algoritmo? Cioè se nel buffer è presente una stringa "true" allora mi imposta true la mia variabile prova. Mica mi passeresti qualche link con tutti questi operatori che voglio studiarmeli per conto mio?
--- i due messaggi sono stati uniti ---
Solo un ultimo dubbio con il costruttore non ho alcun problema giusto? Solo con gli stream di input ho problemi?
C++:
Attivita::Attivita(const int P, const char *D,const bool S): PID(P) : Started(S) { set_Descrizione(D); }
    Attivita::Attivita(const Attivita &A): PID(A.PID) :Started(A.Started) { set_Descrizione(A.Descriione) }
 
    void Descrizione(const char * D){
        Descrizione= new char [strlen(D)+1];
        strcpy(Descrzione,D);
    }

Se io nel main inizializzo un oggetto Attivita così
C++:
Attivita A(1321, Salto, true);
non ho alcun problema?
Beh sono i soliti operatori che utilizzi con gli stream, non c'è nulla da studiare...
Se vuoi che cin ti legga true come bool ti basta questo:
C++:
#include <iomanip>
...
std::cin >> std::boolalpha >> boolean;


Se io nel main inizializzo un oggetto Attivita così
C++:
Attivita A(1321, Salto, true);
non ho alcun problema?
Beh se Salto è una altra variabile stringa definita OK. E comunque non capisco perché utilizzare le const char* invece delle string e string_view...
 
Pubblicità
Pubblicità
Indietro
Top