Getchar存储不必要的信息

时间:2014-10-25 16:20:47

标签: c++ getchar

我无法理解为什么以下代码无法正常运行。这只是一个例子,程序应该从用户那里获取一些内容,直到他/她按下点('。')并打印出大于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循环将永远持续下去。

0 个答案:

没有答案