- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我对使用 unsetf
有疑问.以下是为格式化数字获取正确输入的答案。
Actually, You can force
operator>>
to get and properly interpret prefixes0
and0x
. All you have to do is to remove default settings forstd::cin
:std::cin.unsetf(std::ios::dec);
std::cin.unsetf(std::ios::hex);
std::cin.unsetf(std::ios::oct);Now, when you input
0x1a
you will receive26
.
我不明白 hex
和 oct
的最后两个 unsetf
命令。如果我仅将 unsetf
与 dec
一起使用,我会得到正确的输入,我的意思是输入 0x1a
并接收 26
。
那么对hex
和dec
使用unsetf
有什么意义呢?
最佳答案
I don't understand the last two unsetf commands for hex and oct
如果 hex
和 oct
标志之前没有设置,是的,取消设置 dec
就足够了:
std::cin.unsetf(std::ios::dec);
int n;
std::cin >> n; // 0x1a
std::cout << n; // 26
( demo )
但是,如果之前设置了这些标志,它们可能会影响十六进制数的解析:
std::cin.unsetf(std::ios::dec);
int n;
std::cin >> n; // 0x1a
std::cout << n; // 0
( demo )
所以,如果你想让 std::cin
通过猜测它们的基数来解析你的数字,你应该 unsetf
hex
, dec
和 oct
。
关于c++ - 在 C++ 中将 unsetf 与十六进制十进制数和八进制数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180409/
我对使用 unsetf 有疑问.以下是为格式化数字获取正确输入的答案。 Actually, You can force operator>> to get and properly interpret
我是一名优秀的程序员,十分优秀!