Hi All,
I want to convert char * to int.
Plz help me out.
Thanks in advance.
Jump to PostDon't use atoi() - here's how to do it in C++
#include <sstream> #include <iostream> int main() { const char* foo("1234"); std::stringstream ss(foo); int i; if( ss >> i ) std::cout << "i is: " << i ; else std::cout << "error"; }
The reason for using …
Jump to PostI suppose I should add that atoi() has no reliable way of handling any errors that might be thrown up when your conversion fails. This is where stringstreams provide a far more robust solution, that you can test for failure before using the retrieved value.
What exactly do you mean?
Do you
a) want to convert an array of ASCII characters into an int:
char *numstr = "1234";
int val = atoi(numstr); // val now = 1234
b) convert the pointer to an int:
char *xyz; // given contents somewhere
int addr = (int)xyz; // addr now = the char pointer
Thanks a lot for your Rply..i will be using atoi().
And it worked for me. :)
Don't use atoi() - here's how to do it in C++
#include <sstream>
#include <iostream>
int main()
{
const char* foo("1234");
std::stringstream ss(foo);
int i;
if( ss >> i )
std::cout << "i is: " << i ;
else
std::cout << "error";
}
The reason for using stringstreams is that your conversion will fail if the string contains anything which can't be converted to an int - which, if you're dealing with user input, is a real problem. if you use a stringstream, you can detect the error, without it messing up the rest of the program.
Don't use atoi()
Why?
I suppose I should add that atoi() has no reliable way of handling any errors that might be thrown up when your conversion fails. This is where stringstreams provide a far more robust solution, that you can test for failure before using the retrieved value.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.