gpt4 book ai didi

c++ - 使用 std::cin.getline() 输入一个 char 数组,无法读取整数

转载 作者:行者123 更新时间:2023-11-30 02:48:02 26 4
gpt4 key购买 nike

#include <iostream>
int main()
{
using namespace std;
char a[50];
int y;
cin >> y;
cin.getline(a, 40);
cout << "y= " << y << "\n"<< "a=" << a << endl;
}

运行时,我输入45,回车。然后输出是

y= 45
a=

我还没有机会输入a。但是当我使用这段代码时:

#include <iostream>
int main()
{
using namespace std;
char a[50];
int y;
cin.getline(a, 40);
cin >> y;
cout << "y= " << y << "\n" << "a=" << a << endl;
}

我用 45 运行它,进入,钓鱼,进入。它的输出

y= 45
a=fish

那么,有人可以解释为什么第一个代码中的 cin.getline(a,40) 不起作用,但第二个代码中可以吗?我很困惑。

最佳答案

在第一种情况下,输入仍将包含一个换行符,然后由以下 cin.getline() 调用使用,该调用读取到下一个换行符。然后程序终止。

在第二种情况下,cin.getline() 将读取第一行直到换行符,然后读取之后的第一个整数。

因此,您的问题是 cin >> y 不会消耗您的换行符。您可以通过再次调用 cin.getline() 来弥补这一点:

#include <iostream>
int main()
{
using namespace std;
char a[50];
int y;
cin >> y;
cin.getline(a, 1);
cin.getline(a, 40);
cout << "y= " << y << "\n"<< "a=" << a << endl;
}

关于c++ - 使用 std::cin.getline() 输入一个 char 数组,无法读取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22284305/

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