[C++] Dubbio su valore cin

  • Nuovo server! Potrebbero esserci ancora piccoli problemi legati alle disponibilità dei servizi del Forum. Scopri di più
#1
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;
 

_Achille

Utente Attivo
2,886
652
Hardware Utente
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
Hard Disk
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
Scheda Video
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
Alimentatore
RM550X
Case
NZXT S340
Periferiche
Cooler Master XT; Razer Abyssus
Sistema Operativo
Windows 10 Pro
#2
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.
 
Mi Piace: Mr.Cobra
#3
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?
Post unito automaticamente:

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:

_Achille

Utente Attivo
2,886
652
Hardware Utente
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
Hard Disk
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
Scheda Video
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
Alimentatore
RM550X
Case
NZXT S340
Periferiche
Cooler Master XT; Razer Abyssus
Sistema Operativo
Windows 10 Pro
#4
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?
Post unito automaticamente:

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...
 
Mi Piace: Mr.Cobra

Discussioni Simili