我对C ++还是很陌生,我试图创建一个程序来接收来自用户的请求,如下所示:
i7:43 2 21 A
基本上必须遵循的格式是在我应该有一个没有任何空格的数字之后,直接加上:,然后数字之间的空格,最后一个字符应为A。用户可以选择输入尽可能多的数字想要在:和A之间输入。如果输入与此格式有任何不同,则用户会收到错误消息。
我设法以某种方式完成了一部分(尽管仍然需要弄清楚如何处理整个空格),但是我无法存储最后一个字符A idk的原因……这是我到目前为止所做的。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int size;
vector<long double> nums;
long double numbers;
char c1, c2, c3;
if (cin >> c1)
{
if (cin >> size >> c2 && c1 == '<' && c2 == ':')
{
while (cin >> numbers)
nums.push_back(numbers);
cin>>c3; //this doesn't work or even get called
cout<<c3<<endl;
for(int i=0;i<nums.size();i++)
{
cout<<nums[i]<<endl;
}
}
else{
cout<<"error"<<endl;
}
}
return 0;
}
您的问题是,在cin
循环之后设置了while
的故障位。之后调用cin.clear()
,它应该可以工作。相关:Why would we call cin.clear() and cin.ignore() after reading input?