我理解整数以二进制表示法存储,但我想知道这会如何影响它们的读取 - 例如:
假设
cin.unsetf(ios::dec); cin.unsetf(ios::hex); and cin.unsetf(ios::oct);
用户输入
0x43 0123 65
以整数形式存储。现在假设程序想要将这些值识别为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";
}
该函数将所有整数读取为十进制。我在字符串转换后输入一些测试代码来输出字符串,字符串是十进制形式的数字。我想知道整数是否有办法保持基本符号。
当然,您可以将数字作为字符串输入并以此方式进行测试,但是然后存在将字符串作为int读取的问题。
例如:
string a = 0x43;
int num = atoi(a.c_str());
cout << num; // will output 43
似乎保持/转换基本符号可能会变得非常棘手。作为一个附加问题,hex,dec和oct操纵器甚至不会帮助解决上面显示的问题,因为整数存储完全错误,甚至不能转换为小数。
答案 0 :(得分:5)
整数(和所有其他数据)不使用“二进制表示法”存储,它们存储为二进制数。不,整数没有办法保留他们的输入格式(这正是你实际要问的)。