С ++ преобразование с плавающей точкой в ​​строку, прерывающее поток строк

Я работаю на платформе 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

https://docs.particle.io/reference/firmware/core/

1 ответ

Решение

Я нашел ответ. Не уверен, что это верно для обычного C++, но для версии C++, работающей на искре частицы, решение состоит в следующем:

float myFloat = 6.123;
String floatString(myFloat, 2);

Это дает мне строку, с которой я могу работать!

Другие вопросы по тегам