Come cin Space in c ++?

Diciamo che abbiamo un codice:

int main() { char a[10]; for(int i = 0; i >a[i]; if(a[i] == ' ') cout<<"It is a space!!!"<<endl; } return 0; } 

Come cin un simbolo dello spazio dall’input standard? Se scrivi spazio, il programma ignora! 🙁 Esiste una qualsiasi combinazione di simboli (ad esempio ‘\ s’ o qualcosa di simile) che significa “Spazio” che posso utilizzare dallo standard input per il mio codice?

    Per impostazione predefinita, salta tutti gli spazi bianchi (spazi, tabulazioni, nuove linee, ecc.). Puoi cambiare il suo comportamento o usare un meccanismo leggermente diverso. Per cambiare il suo comportamento, usa il manipolatore noskipws , come segue:

      cin >> noskipws >> a[i]; 

    Ma, dato che sembri come se volessi guardare i singoli personaggi, ti suggerirei di usare get , come questo prima del tuo ciclo

      cin.get( a, n ); 

    Nota: get interromperà il recupero di caratteri dallo stream se trova un carattere di nuova riga ( \n ) o dopo n-1 caratteri. Si arresta in anticipo in modo che possa aggiungere il carattere null ( \0 ) all’array. Puoi leggere di più sull’interfaccia di istream qui .

     #include  #include  int main() { std::string a; std::getline(std::cin,a); for(std::string::size_type i = 0; i < a.size(); ++i) { if(a[i] == ' ') std::cout<<"It is a space!!!"< 

    Per inserire UN INTERO LINEA contenente un sacco di spazi puoi usare getline(cin,string_variable);

    per esempio:

     string input; getline(cin, input); 

    Questo formato cattura tutti gli spazi nella frase fino a quando non viene premuto return

    Usa cin.get() per leggere il prossimo carattere.

    Tuttavia, per questo problema, è molto inefficiente leggere un personaggio alla volta. Usa invece istream::read() .

     int main() { char a[10]; cin.read(a, sizeof(a)); for(int i = 0; i < 10; i++) { if(a[i] == ' ') cout<<"It is a space!!!"<< 

    E usa == per controllare l'uguaglianza, non = .

    L’uso dell’operatore di cin >> farà cadere gli spazi bianchi iniziali e interromperà l’input ai primi spazi bianchi finali. Per afferrare un’intera riga di input, inclusi gli spazi, prova cin.getline() . Per afferrare un personaggio alla volta, puoi usare cin.get() .

    Ho pensato di condividere la risposta che ha funzionato per me. La riga precedente terminava in una nuova riga, quindi la maggior parte di queste risposte da sole non funzionava. Questo ha fatto:

     string title; do { getline(cin, title); } while (title.length() < 2); 

    Questo presupponeva che l'input fosse sempre lungo almeno 2 caratteri, il che ha funzionato per la mia situazione. Potresti anche provare semplicemente a confrontarlo con la stringa "\n" .

    Prova questo in tutti e quattro i modi per prendere input con lo spazio 🙂

     #include #include using namespace std; void dinput(char *a) { for(int i=0;; i++) { cin >> noskipws >> a[i]; if(a[i]=='\n') { a[i]='\0'; break; } } } void input(char *a) { //cout< <"\nInput string: "; for(int i=0;; i++) { *(a+i*sizeof(char))=getchar(); if(*(a+i*sizeof(char))=='\n') { *(a+i*sizeof(char))='\0'; break; } } } int main() { char a[20]; cout<<"\n1st method\n"; input(a); cout< 

    Ho lo stesso problema e ho appena usato cin.getline(input,300); .

    noskipws e cin.get() volte non sono facili da usare. Dato che hai la giusta dimensione del tuo array prova a usare cin.getline() che non si preoccupa di nessun personaggio e legge l’intera riga nel numero di caratteri specificato.