细节问题: 输入空行之后需要重置

如果使用cin.get( )输入了空行之后,必须使用cin.clear( )重置输入。
例如:

#include 
using namespace std ;
int main()
{
	char name[20] ;
	cin.get(name, 20).get() ;
	int j = 0 ;
	cin >> j ;
	cout << j << endl ;
}

运行结果:


0

当在一开始输入空行之后,后面对于变量j就没有了输入机会

当get( )读取空行之后将设置失效位,这意味着接下来的输入将会被阻断,但可以用下面的命令来恢复输入:
cin.clear( )

改变一下程序:

#include 
using namespace std ;
int main()
{
	char name[20] ;
	cin.get(name, 20).get() ;
	cin.clear() ;
	int j = 0 ;
	cin >> j ;
	cout << j << endl ;
}

运行结果:


4
4

如果在编程中遇到可能会出现用户输入空行的情况,就要想到重值输入的cin.clear( )这个语句,以防后面的输入都没法做了。

你可能感兴趣的:(C++,Primer,Plus,c++)