在使用函数cin.getline()时可能会存在问题,例如:
using namespace std;
char city[20];
cout<<"Input your city:"<<endl;
cin.getline(city,3);
cout<<"Hi,"<<city<<endl;
cin.getline(city,20);
cout<<"Hello "<<city<<endl;
return 0;
- 运行结果:
- cin.getline(city,3)指定最多只能接收2个字符
- 当输入的字符比指定的多,getline会设置失效位,接下来的输入被阻断
解决办法
using namespace std;
char city[20];
cout<<"Input your city:"<<endl;
cin.getline(city,3);
cin.clear();//恢复输入
cout<<"Hi,"<<city<<endl;
cin.getline(city,20);
cout<<"Hello "<<city<<endl;
return 0;
运行结果:
即cin.getline(city,20);接收输入流中的剩余部分
若要再次输入需要写两次cin.getline(city,20):
using namespace std;
char city[20];
cout<<"Input your city:"<<endl;
cin.getline(city,3);
cin.clear();//恢复输入
cout<<"Hi,"<<city<<endl;
cout<<"Input your city again:"<<endl;
cin.getline(city,20);
cin.getline(city,20);
cout<<"Hello "<<city<<endl;
return 0;
- 运行结果: