hi , im pretty new to computer science and alose to this community . i have a problem that im trying to solve and hope you guys can help me with it . im trying to create my own version of the function "atoi" that can be found in stdlib and i cant get it to work . i know how to convert a single char from the string to and int , but its starting to be a problem when im trying to convert a number like "111" , if any1 can help it could be great . thanks ...

I assume you have this one function which can convert a single character to a number. Say it is int convert_one_char(const char c).

Given this function here is the code to extend it to convert a string with multiple chars:

``````int convert_one_char(const char c)
{
if( c == '0' ) return 0;
else if( c == '1' ) return 1;
else if( c == '2' ) return 2;
else if( c == '3' ) return 3;
else if( c == '4' ) return 4;
else if( c == '5' ) return 5;
else if( c == '6' ) return 6;
else if( c == '7' ) return 7;
else if( c == '8' ) return 8;
else if( c == '9' ) return 9;
else return -1 ;
}

long my_atoi( const string& s )
{
int curr_dec_multiplier = 10 ;
long ret_number = convert_one_char(s[s.length() - 1]) ;
for( int i = s.length() - 2; i >= 0; i-- )
{
ret_number += convert_one_char(s[i]) * curr_dec_multiplier ;
curr_dec_multiplier *= 10 ;
}

return ret_number ;
}

//------------------------------------------------

int main ()
{
cout << "523623412 converted = " << my_atoi("523623412") << endl ;
cout << "623412 converted = " << my_atoi("623412") << endl ;
cout << "231 converted = " << my_atoi("231") << endl ;

//-----------------------
getch() ;
return 0;
}
//------------------------------------------------``````

You'll need to put in appropriate error handling code...

To convert a single character to an int just simply subtract '0' from its ascii value

``````char c = '1';
int num = c - '0';``````

When converting several characters to int you have to multiply the previous value by 10 to make room for the new digit.
Below num is an integer and digits is a character array that contains all the digits. This code snipped would be placed inside a loop.

``num = (num * 10) + digits[i] - '0';``

Thanks guys , you were totally helpful .

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.