如何强制std :: cin不进行任何隐式转换?

时间:2011-08-19 15:39:41

标签: c++

我想知道我们是否可以强制使用std :: cin,因此它不会在数据类型之间执行任何隐式转换,例如:

unsigned int number;
cout<<"Please input a number :";
if(std::cin>>number)cout<<std::endl<<"Good number";
else cout<<"Bad number";

因此,如果你打-23或26.3,它只会执行隐式转换并将值存储在number中,这不是我想要的。那么我们可以阻止它吗?

由于

2 个答案:

答案 0 :(得分:2)

cin会将值存储到您提供的数据类型中。 unsigned int不会使用signed个数字,因此它会溢出到最大的unsigned int0。在您的示例中,您提供的double常量不是unsigned int。如果您希望按照预期的方式工作,请将unsigned int更改为double

答案 1 :(得分:0)

cin将始终执行该转换;这不是你能控制的东西。我建议将值读入字符串并检查.-,然后从那里继续。