gpt4 book ai didi

c++ - cin.getline() 函数在 cin 之后无法正常工作?

转载 作者:行者123 更新时间:2023-11-28 07:07:16 31 4
gpt4 key购买 nike

我正在尝试以下代码:

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 之后使用 cin.getline() 时,它不起作用。

有人可以帮忙吗?

最佳答案

问题是 operator>> 忽略空格(即 ' ', '\t', '\n')之前字段,即它一直读取到 before 下一个空格。

另一方面,

getline 读取until and including下一个换行符,并返回换行符之前的文本。

因此,如果您在换行符之前先执行 operator>>,然后执行 getline,则 operator>> 将一直读取到之前换行符和 getline 将只读到换行符之后,返回一个空字符串。

注意:输入“20, 20, mystring”后输入缓冲区中的内容有效

20\n20\nmystring

因此

  • 第一个 operator>> 读取并返回 20
  • 第二个 operator>> 读取到第二个 20 之后,吞下第一个 \n 并返回第二个 20
  • getline 一直读取到第二个 \n 并返回之前的文本,即什么都没有。

关于c++ - cin.getline() 函数在 cin 之后无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21606922/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com