我知道整数以二进制表示法存储,但我想知道这会如何影响它们的读取 - 例如:
假设
cin.unsetf(ios::dec); cin.unsetf(ios::hex); and cin.unsetf(ios::oct);
Run Code Online (Sandbox Code Playgroud)
用户输入
0x43 0123 65
Run Code Online (Sandbox Code Playgroud)
它们存储为整数.现在假设程序想要将这些值识别为hex,oct或dec并执行类似的操作.
void number_sys(int num, string& s)
{
string number;
stringstream out;
out << num;
number = out.str();
if(number[0] == '0' && (number[1] != 'x' && number[1] != 'X')) s = "octal";
else if(number[0] == '0' && (number[1] == 'x' || number[1] == 'X')) s = "hexadecimal";
else s = "decimal";
}
Run Code Online (Sandbox Code Playgroud)
该函数将所有整数读为十进制.我在字符串转换后输入一些测试代码来输出字符串,字符串是十进制形式的数字.我想知道是否有一种方法可以让整数保持基本符号.
当然你可以输入数字作为字符串并测试那种方式,但是然后存在将字符串作为int读回的问题.
例如:
string a = 0x43;
int num = atoi(a.c_str());
cout << num; // will output 43
Run Code Online (Sandbox Code Playgroud)
似乎保持/转换基本符号可能变得非常棘手.作为一个附加问题,hex,dec和oct操纵器甚至不会帮助解决上面显示的问题,因为整数存储完全错误,甚至不能转换为小数.