cin.getline()

在使用函数cin.getline()时可能会存在问题,例如:

using namespace std;
    char city[20];
    cout<<"Input your city:"<cin.getline(city,3);
    cout<<"Hi,"<cin.getline(city,20);
    cout<<"Hello "<return 0;
  • 运行结果:
    cin.getline()_第1张图片
  • cin.getline(city,3)指定最多只能接收2个字符
  • 当输入的字符比指定的多,getline会设置失效位,接下来的输入被阻断

解决办法

using namespace std;
    char city[20];
    cout<<"Input your city:"<cin.getline(city,3);
    cin.clear();//恢复输入
    cout<<"Hi,"<cin.getline(city,20);
    cout<<"Hello "<return 0;
  • 运行结果:
    cin.getline()_第2张图片

  • 即cin.getline(city,20);接收输入流中的剩余部分

若要再次输入需要写两次cin.getline(city,20):

 using namespace std;
    char city[20];
    cout<<"Input your city:"<cin.getline(city,3);
    cin.clear();//恢复输入
    cout<<"Hi,"<cout<<"Input your city again:"<cin.getline(city,20);
    cin.getline(city,20);
    cout<<"Hello "<return 0;
  • 运行结果:
    cin.getline()_第3张图片

你可能感兴趣的:(C++)