因此,我使用 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/