Я работаю на платформе Spark.info, которая в настоящее время застряла, пытаясь распечатать плавающий элемент в виде строки. Я видел несколько решений, где вы используете поток строк для преобразования числа с плавающей запятой.
Моя реализация выглядит следующим образом:
#include <sstream>
void loop()
{
float tempC = 21.35;
std::ostringstream stream;
stream << tempC;
std::string tempCString = stream.str();
// why does this give me a blank string?
Serial.print("Temp 1: ");
Serial.println(tempCString.c_str());
// while this outputs the float
Serial.print("Temp 2: ");
Serial.println(tempC);
Serial.println(tempCString.size());
}
Это приводит к следующему выводу:
Temp 1:
Temp 2: 21.35
6
Кроме того, это не в состоянии скомпилировать:
Serial.println(tempCString);
Со следующей ошибкой:
error: no matching function for call to 'USBSerial::println(std::string&)'
Изменить: ссылка на документацию по частицам о Serial.print
Я нашел ответ. Не уверен, что это верно для обычного c ++, но для версии c ++, работающей на искре частицы, решение состоит в следующем:
float myFloat = 6.123;
String floatString(myFloat, 2);
Это дает мне строку, с которой я могу работать!
Других решений пока нет …