cin 读不读入空格解决思路
cin 读不读入空格
#include <iostream>
using namespace std;
int main()
{
long number = 0L;
char ch;
cout << "Please enter a sequence of characters terminated by '#':" << endl;
// We have to read at least one character - even if it's '#' - so do-while is best
do
{
cin >> ch;
number++;
} while (ch != '#');
// We do not count '#' as a character, so 'number' must be adjusted
number--;
cout << "You entered " << number << " characters (not counting spaces)." << endl;
return 0;
}
为什么当我输入空格或者回车的时候,number是不会增加的,ch是char型,按理说,我输入空格或者回车number都会自加的,但是跑出来的结果是只有输入非空格字符,number才会加1,这是怎么回事?
------解决方案--------------------
cin 缺省设置会吃掉空白。
------解决方案--------------------
cin不会读入空格;但是这并不表示cin不认识空格。实际上,当你输入string的时候,如果输入了空格或者其他的空白符号,那么cin就会认为这个string已经结束了,即使你后面继续输入,它也不管了。
------解决方案--------------------
可以这么处理:
int ch;
do
{
ch =cin.get();
number++;
} while (ch != '#');
------解决方案--------------------
>> 是会过滤掉不可见字符(如 空格 回车,TAB 等)
可以这么写
cin>>noskipws>>ch//不想略过空白字符,那就使用 noskipws 流控制
#include <iostream>
using namespace std;
int main()
{
long number = 0L;
char ch;
cout << "Please enter a sequence of characters terminated by '#':" << endl;
// We have to read at least one character - even if it's '#' - so do-while is best
do
{
cin >> ch;
number++;
} while (ch != '#');
// We do not count '#' as a character, so 'number' must be adjusted
number--;
cout << "You entered " << number << " characters (not counting spaces)." << endl;
return 0;
}
为什么当我输入空格或者回车的时候,number是不会增加的,ch是char型,按理说,我输入空格或者回车number都会自加的,但是跑出来的结果是只有输入非空格字符,number才会加1,这是怎么回事?
------解决方案--------------------
cin 缺省设置会吃掉空白。
------解决方案--------------------
cin不会读入空格;但是这并不表示cin不认识空格。实际上,当你输入string的时候,如果输入了空格或者其他的空白符号,那么cin就会认为这个string已经结束了,即使你后面继续输入,它也不管了。
------解决方案--------------------
可以这么处理:
int ch;
do
{
ch =cin.get();
number++;
} while (ch != '#');
------解决方案--------------------
>> 是会过滤掉不可见字符(如 空格 回车,TAB 等)
可以这么写
cin>>noskipws>>ch//不想略过空白字符,那就使用 noskipws 流控制