Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you convert a String to a float or int?

Tags:

arduino

In an Arduino program I'm working on the GPS sends the coordinates to the arduino through USB. Because of this, the incoming coordinates are stored as Strings. Is there any way to convert the GPS coordinates to a float or int?

I've tried int gpslong = atoi(curLongitude) and float gpslong = atof(curLongitude), but they both cause Arduino to give an error:

error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'

Does anyone have any suggestions?

like image 661
Xjkh3vk Avatar asked Aug 13 '13 03:08

Xjkh3vk


2 Answers

You can get an int from a String by just calling toInt on the String object (e.g. curLongitude.toInt()).

If you want a float, you can use atof in conjunction with the toCharArray method:

char floatbuf[32]; // make this at least big enough for the whole string
curLongitude.toCharArray(floatbuf, sizeof(floatbuf));
float f = atof(floatbuf);
like image 89
nneonneo Avatar answered Sep 23 '22 08:09

nneonneo


c_str() will give you the string buffer const char* pointer.
.
So you can use your convertion functions:.
int gpslong = atoi(curLongitude.c_str())
float gpslong = atof(curLongitude.c_str())

like image 40
cabbi Avatar answered Sep 21 '22 08:09

cabbi