Как к Пространству cin в C++?

Скажите, что у нас есть код:

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

Как к cin Символ пробела от стандартного входа? Если Вы пишете пространство, программа игнорирует!:( Есть ли какая-либо комбинация символов (например, \s 'или что-то вроде этого), который означает "Пространство", которое я могу использовать от стандартного входа для моего кода?

29
задан Narek 5 May 2010 в 06:52
поделиться

4 ответа

По умолчанию пропускаются все пробелы (пробелы, табуляции, новые строки и т. Д.). Вы можете либо изменить его поведение, либо использовать немного другой механизм. Чтобы изменить его поведение, используйте манипулятор noskipws следующим образом:

 cin >> noskipws >> a[i];

Но, поскольку вам кажется, что вы хотите посмотреть на отдельные символы, я бы предложил использовать get , как это было до вашего цикла

 cin.get( a, n );

Примечание: get прекратит извлечение символов из потока, если он найдет символ новой строки ( \ n ) или после n-1 символов. Он останавливается раньше, чтобы можно было добавить к массиву нулевой символ ( \ 0 ). Вы можете узнать больше об интерфейсе istream здесь .

42
ответ дан 28 November 2019 в 01:03
поделиться

Используйте cin.get () , чтобы прочитать следующий символ.

Однако для этой проблемы очень неэффективно читать символ за раз. Вместо этого используйте 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!!!"<<<endl;
   }
   return 0;
}

И используйте == , чтобы проверить равенство, а не = .

4
ответ дан 28 November 2019 в 01:03
поделиться

Использование оператора >> cin удалит ведущие пробелы и остановит ввод на первом завершающем пробеле. Чтобы получить всю строку ввода, включая пробелы, попробуйте cin.getline () . Чтобы захватить по одному символу за раз, вы можете использовать cin.get () .

3
ответ дан 28 November 2019 в 01:03
поделиться
#include <iostream>
#include <string>

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!!!"<<std::endl;
   }
   return 0;
}
18
ответ дан 28 November 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: