這個小練習是爲了從用戶那裏得到一個可以是十進制,十六進制或八進制的字符串。首先,我需要確定字符串是哪一種編號。第二個我需要轉換,這個數字爲int,並在其適當的格式顯示數字,例如:檢查十六進制前綴後,將字符串轉換爲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
我沒有看到1st for循環的必要性。 – faisal
我建議發佈什麼輸入字符串看起來像所以我們給你一個更好的答案。 –