【发布时间】:2013-12-17 16:31:40
【问题描述】:
这个小练习旨在从用户那里获取一个字符串,该字符串可以是十进制、十六进制或八进制。首先,我需要确定字符串是哪种数字。第二,我需要将该数字转换为 int 并以正确的格式显示该数字,例如:
cout <<(dec,hex,oct, etc)<< number;
这就是我想出的。我想要一种更简单、更干净的方式来写这个。
string number = "";
cin >> number;
string prefix = "dec";
char zero = '0';
char hex_prefix = 'x';
string temp = "";
int value = 0;
for(int i =0; i<number.size();++i)
{
if(number[0] == zero)//must be octal or hex
{
if (number[0] == zero && number[1] == hex_prefix ) //is hex
{
prefix = "hex";
for(int i = 0; i < (number.size() - 2); ++i)
{
temp[i] = number[i+2];
}
value = atoi(temp.c_str());
}
//... code continues to deal with octal and decimal
【问题讨论】:
-
我没有看到第一个 for 循环的必要性。
-
我建议发布输入字符串的样子,以便我们为您提供更好的答案。