Como c espaço em c + +?

Digamos que tenhamos um código:

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

Como cin um símbolo de espaço da input padrão? Se você escreve espaço, o programa ignora! 🙁 Existe alguma combinação de símbolos (por exemplo, ‘\ s’ ou algo assim) que significa “Espaço” que eu posso usar da input padrão para o meu código?

Ele pula todo o espaço em branco (espaços, tabulações, novas linhas, etc.) por padrão. Você pode alterar seu comportamento ou usar um mecanismo ligeiramente diferente. Para alterar seu comportamento, use os manipuladores noskipws , da seguinte maneira:

  cin >> noskipws >> a[i]; 

Mas, como você parece querer ver os caracteres individuais, sugiro usar get , assim antes do loop

  cin.get( a, n ); 

Nota: get irá parar de recuperar chars do stream se encontrar um caractere de nova linha ( \n ) ou depois de caracteres n-1. Ele para cedo, para que possa append o caractere nulo ( \0 ) à matriz. Você pode ler mais sobre a interface istream aqui .

 #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!!!"< 

Para inserir uma LINHA COMPLETA contendo muitos espaços, você pode usar getline(cin,string_variable);

por exemplo:

 string input; getline(cin, input); 

Este formato captura todos os espaços da sentença até que o return seja pressionado

Use cin.get() para ler o próximo caractere.

No entanto, para esse problema, é muito ineficiente para ler um caractere por vez. Use o istream::read() vez disso.

 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 use == para verificar a igualdade, não = .

O uso do operador de cin irá diminuir os espaços em branco iniciais e interromperá a input no primeiro espaço em branco à direita. Para pegar uma linha inteira de input, incluindo espaços, tente cin.getline() . Para pegar um caractere de cada vez, você pode usar cin.get() .

Eu pensei em compartilhar a resposta que funcionou para mim. A linha anterior terminou em uma nova linha, então a maioria dessas respostas por si só não funcionou. Isso fez:

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

Isso foi assumindo que a input é sempre pelo menos 2 caracteres, o que funcionou para a minha situação. Você também pode tentar simplesmente compará-lo com a string "\n" .

Tente isso todos os quatro maneira de ter input com espaço 🙂

 #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< 

Eu tenho o mesmo problema e eu usei apenas cin.getline(input,300); .

noskipws e cin.get() às vezes não são fáceis de usar. Já que você tem o tamanho certo de sua matriz, tente usar cin.getline() que não se importa com nenhum caractere e leia a linha inteira na contagem de caracteres especificada.