Скажите, что у нас есть код:
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 'или что-то вроде этого), который означает "Пространство", которое я могу использовать от стандартного входа для моего кода?
По умолчанию пропускаются все пробелы (пробелы, табуляции, новые строки и т. Д.). Вы можете либо изменить его поведение, либо использовать немного другой механизм. Чтобы изменить его поведение, используйте манипулятор noskipws
следующим образом:
cin >> noskipws >> a[i];
Но, поскольку вам кажется, что вы хотите посмотреть на отдельные символы, я бы предложил использовать get
, как это было до вашего цикла
cin.get( a, n );
Примечание: get
прекратит извлечение символов из потока, если он найдет символ новой строки ( \ n
) или после n-1 символов. Он останавливается раньше, чтобы можно было добавить к массиву нулевой символ ( \ 0
). Вы можете узнать больше об интерфейсе istream
здесь .
Используйте 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;
}
И используйте ==
, чтобы проверить равенство, а не =
.
Использование оператора >> cin удалит ведущие пробелы и остановит ввод на первом завершающем пробеле. Чтобы получить всю строку ввода, включая пробелы, попробуйте cin.getline ()
. Чтобы захватить по одному символу за раз, вы можете использовать cin.get ()
.
#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;
}