我无法理解为什么以下代码无法正常运行。这只是一个例子,程序应该从用户那里获取一些内容,直到他/她按下点('。')并打印出大于3的整数。
我遇到的麻烦是,每当我按下点时,最终输出都包含这个点,这让我想知道缓冲区是否存在某些东西,或者我在代码中搞砸了一些东西。
你会如此善良并帮助我解决这个问题,以便最终输出不包含点吗? (:
#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>
using namespace std;
bool greaterThan(int n)
{
return n>3;
}
int main(void)
{
vector<int> vs;
int n, c;
do{
cout << "Enter the number: ";
cin >> n;
vs.push_back(n);
c=getchar();
putchar(c);
}while(c!='.');
vector<int>::iterator funkyIterator = find_if(vs.begin(), vs.end(), greaterThan);
while(funkyIterator != vs.end())
{
cout << *funkyIterator << " ";
funkyIterator = find_if(funkyIterator +1, vs.end(), greaterThan);
}
}
我的代码有什么特别的错误吗? 我想我可以添加一些条件,以便c不能等于'。'但实际上它根本没有任何意义,因为do while循环将永远持续下去。