在 C++ 中使用带有十六进制十进制和八进制数的 unsetf
using unsetf with hex dec and octal numbers in C++
我有一个关于使用unsetf
的问题。以下是为格式化数字获取正确输入的答案。
实际上,您可以强迫
operator>>
获得并正确解释 前缀0
和0x
。您所要做的就是删除默认设置 对于std::cin
:std::cin.unsetf(std::ios::dec); std::cin.unsetf(std::ios::hex); std::cin.unsetf(std::ios::oct);
现在,当您输入
0x1a
时,您将收到26
。
我不明白hex
和oct
的最后两个unsetf
命令.如果我仅将unsetf
与dec
一起使用,我会得到正确的输入,我的意思是输入0x1a
并接收26
。
那么使用unsetf
进行hex
和dec
有什么意义呢?
我不明白十六进制和 oct 的最后两个 unsetf 命令
如果以前未设置hex
和oct
标志,是的,取消设置dec
就足够了:
std::cin.unsetf(std::ios::dec);
int n;
std::cin >> n; // 0x1a
std::cout << n; // 26
(演示(
但是,如果这些标志之前已设置,则它们可能会影响十六进制数的解析:
std::cin.unsetf(std::ios::dec);
int n;
std::cin >> n; // 0x1a
std::cout << n; // 0
(演示(
所以,如果你想让std::cin
通过猜测它们的基数来解析你的数字,你应该unsetf
hex
、dec
和oct
。
相关文章:
- 用c++把小数点转换成八进制
- 在 C++ 中使用带有十六进制十进制和八进制数的 unsetf
- 十进制到八进制递归C++.以标准::字符串格式输出
- 如何使系统在十六进制数之前打印 0x,在八进制数之前打印 0?
- 将大十六进制数转换为十进制形式(以 10 为基数的形式)的算法
- 如何在C++中使用setiosflags打印出十进制数作为八进制数
- 将八进制分数转换为十进制 - c++
- 八进制到十进制的转换(调试)
- 在 c++ 中将八进制数变成实数
- C++二进制转换为十进制,八进制
- 从几个十进制数中绘制一个十六进制数
- 知道如何将八进制数转换为带有递归的小数
- 以十进制、八进制和十六进制表示法标识整数文本是否与转义字符中的整数文本相同
- 数组中的无效八进制数字是否有解决方法
- 为什么这个程序的结果是三个十进制数"597, 295, 295,"输入两个十六进制数"255 127<enter>"
- turbo八进制数在c++中的行为
- 如何使用Clang知道IntegerLiteral是来自十进制还是八进制表示
- 将八进制分数转换为十进制分数
- 验证八进制到十进制的转换
- 为什么uint32_t的结果会自动变成八进制数?