arduino - 如何将字符串转换为float或者 int?

在一个Arduino程序中,我正在用USB将坐标发送到Arduino ,正因为如此,传入的坐标被存储为字符串,有没有办法把GPS坐标转换为float或int坐标?

我尝试过 int gpslong = atoi(curLongitude)float gpslong = atof(curLongitude) 但它们都会导致Arduino给出错误:


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

谁有什么建议?

时间:

通过在String对象上调用toInt,可以从String获取int (例如,curLongitude.toInt() )。

如果需要float,可以将atoftoCharArray方法一起使用:


char floatbuf[32]; // make this at least big enough for the whole string
curLongitude.toCharArray(floatbuf, sizeof(floatbuf));
float f = atof(floatbuf);

c_str()将给你字符串缓冲区常量char*指针,

因此你可以使用转换函数:
int gpslong = atoi(curLongitude.c_str())
float gpslong = atof(curLongitude.c_str())

sscanf(curLongitude, "%i", &gpslong) 或者 sscanf(curLongitude, "%f", &gpslong)

...