你如何使cin类型安全?

cac*_*bin 0 c++ cin

众所周知,cin不是类型安全的(例如cin >>整数;输入"五十五"将导致它翻转).我已经看到了许多不那么优雅的方法来处理这个问题,比如获取字符串并使用sstream将其转换为数字,或者使用cin.fail()循环并清除流并重新输入它等等.有没有库或者无论如何重载提取操作符以使cin自动类型安全?

Jam*_*lis 13

例如cin >> integer;,进入"五十五"将导致它翻转

不,这不会导致它"翻转"; 它将导致设置流的失败状态,就像使用任何其他流一样.这并不意味着它std::cin不是类型安全的.

处理从流中读取错误的一个选项是编写执行提取的函数模板,测试它是否成功,如果合适则重置流上的错误状态,并返回提取是否与结果一起成功.