标题:C++ 循环输入不能通过的问题
只看楼主
z562586756
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2011-4-30
结帖率:16.67%
 问题点数:0 回复次数:2 
C++ 循环输入不能通过的问题
初学c++,编写了这样一个程序,目的是循环输入3种不同类型的数据,遇到结尾退出。。

#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
void main ()
{
    float *pf=new float;
    long *pl=new long;
    char *pc=new char;
    cout<<"please input float and input EOF to quit"<<endl;
    while (cin>>*pf)
    cout<<*pf<<endl;
    cout<<"please input long and input EOF to quit"<<endl;
    while (cin>>*pl)
    cout<<*pl<<endl;
    cout<<"please input char and input EOF to quit"<<endl;
    while (cin>>*pc)
    cout<<*pc<<endl;
}

但是运行后只能输入float数据。输入结尾后就直接结束了,为什么啊?
是不是没有清空输入流? 还是要怎么做?
搜索更多相关主题的帖子: include please 
2011-09-10 09:31
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
得分:0 
几个问题:
1. 你这是C++程序,但是头文件什么东西都有,stdio.h这都是c的标准io库。
2. 没有iostream.h这个文件吧,这是c++的标准IO库,应该是#include<iostream>,同时后面你要加入using namespace std;的标准命名空间;
3. 问题的确是你的输入流没有清空的原因。输入过程有错误,所以输入流退出,你直接调用另一个必然也不会正常输入,所以你要做的有两个;第一,清除输入流错误cin.clear();第二,清除输入缓冲区.cin.ignore();看起来第二个是多余的,其实还是必要的,因为你的第一个输入流出错之后,即使除掉错误标记,缓冲区内容还是错误流,还是会继续有问题。
4. 最笨的方法,每个地方加一个cin.clear();cin.ignore();最好是仿真cout后面吧。。
2011-09-10 10:31
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
得分:0 
#include<iostream>
 #include<stdlib.h>
 #include<stdio.h>
using std::cin;
using std::cout;
using std::endl;
void main ()
 {
     float *pf=new float;
     long *pl=new long;
     char *pc=new char;
     cout<<"please input float and input EOF to quit"<<endl;
     while (cin>>*pf)
     cout<<*pf<<endl;
     cin.clear();
     cin.sync();
     cout<<"please input long and input EOF to quit"<<endl;
     while (cin>>*pl)
     cout<<*pl<<endl;
     cin.clear();
     cin.sync();
     cout<<"please input char and input EOF to quit"<<endl;
     while (cin>>*pc)
     cout<<*pc<<endl;
     cin.clear();
     cin.sync();
   
     system("Pause");
 }
 希望您满意
2011-09-11 21:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-349630-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.226908 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved