Question 1:
#include <iostream>using namespace std;void main()
{
    int i=0;
    char c=0;
    cin>>i;
    cin>>c;
    cin>>c;
    cin>>c;
}如上代码,如果在要要求输入i的时候输入了一个字符例如  'c' ,那么后面所有的"cin>>c;"都无法执行,是什么原因?该如何改正?Question 2:
用typedef可以为一个类型再取一个名字,但是怎么对 template< class TYPE, class ARG_TYPE > 
class CArray : public CObject用typedef给它另取一个名字呢?
我用   WinMe  VC6.0

解决方案 »

  1.   

    1、输入i的时候输入了一个字符例如 'c' ,那么你需要重新输入一个整数给i,才会继续
    后面的输入。2. typedef template<class TYPE, class ARG_TYPE> class CArray TemplArray;
    然后就可以使用TemplArray这个名字了,比如:TemplArray<int, char> Array;
      

  2.   

    模板必须实例化后才能命名. typedef CArray<int , int> CIntIntArray;
      

  3.   

    To jishiping(JSP 季世平):
    Question 1、不好意思我说得不太清楚,与其说是无法 执行 ,不如说是它自己执行,也就是在执行得时候自动跳过。
    例如这样:
        c=0;
         cin>>i;      // 这里我输入 'c' ,程序并不暂停,而是直接跳过  i的值不变
         while(c!='y'&&c!='n')
         {
    cout<<"Yes or No?[y,n]"<<endl;
    cin>>c;   //这里也直接跳过,不给我输入的机会,程序进入死循环!!
         }
    Question 2、你的回答自己编译通过了吗?好像不行啊.
      

  4.   

    1、cin是在DOS程序里用的,很多年没有写过DOS了,当初也没有怎么用cin cout,刚才试了
    一下,果然如你所说。看来使用 cin 确实有问题。还是用传统的C函数scanf getchar好用。2、是我说错了。
      

  5.   

    不知道你所需的那个i有没有取值范围(例如没有达到int的最大值之类的),如果有的话,还是很好解决的。
    可以写一段检测输入是否合法的代码。