cin.getline()函数在CIN之后无法正常工作

cin.getline() function not working properly after cin?

本文关键字:常工作 工作 CIN getline 函数 cin 之后      更新时间:2023-10-16

我正在尝试以下代码:

int main() 
{
    char str1[20];
    int a;
    cout << "Enter Integer:"
    cin >> a;
    cout << "Integer:"<<a<<endl;
    cout << "Enter string:"<<endl;
    cin.getline(str1,20);
    cout << "Input String is:"<<str1;
    return 0;
}

和输出为:

Enter Integer:20
Integer:20
Enter string:
Input String is:

当不接受CIN的整数时,我可以输入字符串,但是当我尝试使用CIN.getline()CIN时,它不起作用。

有人可以帮忙吗?

问题是 operator>>忽略了whitespace(即 ' ', 't', 'n' 一个字段,即它读取为直到 the next whitespace。/p>另一方面

因此,如果您在线路断开之前先进行operator>>,然后在getline之前进行operator>>,则CC_6将读取直到线路断开之前,并且Getline只能读取直到线断开后,返回一个空字符串。

注意:输入" 20、20,mystring"之后,您在输入缓冲区中有什么

20n20nmystring

因此

  • 第一个operator>>读取并返回20
  • 第二个operator>>读取到第二个20之后,吞下了第一个n并返回第二个20
  • getline读取直到第二个n并在此之前返回文本,即没有。

尝试函数 get get(),我更喜欢接受字符串,而您需要传递的唯一参数是字符串名称。