gpt4 book ai didi

c++ - 使用getline后如何使cin工作?

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

因此,我使用 cin.getline(str,10,'h') 读取了一个字符串,如您所见,我使用了自定义分隔符“h”并希望读取最多 9 个字符。这样做之后,我使用 cin>>n 将一个整数读入我的 int 变量 n。

#include <iostream>
using namespace std;
int main() {
int n;
char str[100];
cin.getline(str, 10, 'h');
cout<<str<<'-'<<endl;
cout<<"Enter a number:";
cin>>n;
cout<<n;
return 0;
}

假设我传递以下输入


2 3 pl32

这是一个 '\n' 后跟 "2 3 pl32"。我希望 getline 读取字符串 "\n2 3 pl" 然后 cin 读取整数 32。但事实并非如此。

实际输出显示cin读取的是垃圾值:


2 3 pl-
Enter a number:0

编辑:好的,我现在明白了。 Getline 设置了 failbit ,这就是导致问题的原因。问题解决了。

最佳答案

问题是 getline 没有找到它的分隔符,并在 cin 中设置了 failbit 标志。您必须清除标志才能在流中再次阅读:

...
cin.getline(str, 10, 'h');
cin.clear(); # reset a possible error condition
cout<<str<<'-'<<endl;
cout<<"Enter a number:";
cin>>n;
...

关于c++ - 使用getline后如何使cin工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56474039/

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