fliou1 发表于 2014-11-15 21:37:08

c++关于cin 的取值的问题

问题描述:如果定义了一个整形数据用户给它赋值为 字符型 怎摸去判断这个数据是否赋值成功
#include <iostream>

int calc(int x);
int calc(int x,int y);
int calc(int x,int y,int z);

int main(int argc,char *argv[])
{
        int sum;
        int x,y,z;

next:        std::cout<<"请输入x的值:";
        std::cin >> x;
        if (!std::cin)
        {
                std::cout <<"输入的值不为整形数据请重新输入:";
                std::cin.clear(); //用来更改cin的状态标示符
                std::cin.sync();//用来清楚缓存区的数据留
                goto next;
        }
        sum = calc(x);
        std::cout << "平方和为:"<<sum<<'\n';


next1:        std::cout <<"请输入x 空格 y 的值:";
                std::cin>>x>>y;
                if (!std::cin)
                {
                        std::cout <<"输入的值不为整形数据请重新输入:";
                        std::cin.clear(); //用来更改cin的状态标示符
                        std::cin.sync();//用来清楚缓存区的数据留
                        goto next1;
                }
        sum =calc(x,y);
        std::cout <<"两个数的成绩为:" <<sum<<'\n';
//        std::cin.clear();
//        std::cin.ignore(100,'\n');

        std::cout << "请输入x 空格 y 空格 z 的值:";
next3:        std::cin>>x>>y>>z;
                if (!std::cin)
                {
                        std::cout <<"输入的值不为整形数据请重新输入:";
                        std::cin.clear(); //用来更改cin的状态标示符
                        std::cin.sync();//用来清楚缓存区的数据留
                        goto next3;
                }
        sum =calc(x,y,z);
        std::cout <<"三个参数的和为:" <<sum<<'\n';
        //std::cin.clear();
        //std::cin.ignore(100,'\n');
        return 0;
}
int calc(int x)
{
        int sum;
        sum = x*x;
        return sum;
}
int calc(int x,int y)
{
        int sum;
        sum = x*y;
        return sum;
}
int calc(int x,int y,int z)
{
        int sum;
        sum =x+y+z;
        return sum;
}


经过多方面的查资料用if (!std::cin) 来判断是否赋值成功
用std::cin.clear();std::cin.sync();
来清空cin流中缓存数据
各位大牛还有什么好的办法去清空缓存和赋值的对错
页: [1]
查看完整版本: c++关于cin 的取值的问题