cin.getline()的一个问题

用C++:
char str[6];
int n;
cin.getline(str,6);
cin>>num;
然后键入push 1回车,str为"push ",但是num却接收不到数值是什么原因?

cin.getline当输入长度不够或者大于给定长度的时候都会改变输入流的状态,导致下次输入失败。
你调用一下cin.clear()就好了。

 #include<iostream>
using namespace std;

int main(void)
{
    char str[6];
    int n;
    cin.getline(str, 6);
    cin.clear();
    cin >> n;
    cout << n << endl;
    return 0;
}
  1. cin.getline() 的默认分隔符为'\n', 当输入字符数量超过5时,系统就会认为是非法操作,直接停掉了进程,所以你后面的num就接收不到数值了 cin.getline()的输入流不会保存'\n'符,所以在你输入的字符数小于5时可以按回车进入cin>>num的输入过程
  2. 如果把空格作为分隔符,就可以按你的输入样式为num赋值了, cin.getline( str, 6, ' ' ) , 第三个参数为分隔符