使用stringstream时,c++ float到string转换失败

C++ float to string conversion failing with stringstream

本文关键字:string 转换 失败 float c++ stringstream 使用      更新时间:2023-10-16

我正在研究这个粒子。io Spark平台,目前卡住试图打印一个浮点数作为字符串。我看到一些解决方案,你使用字符串流转换浮点数。

我的实现如下:

#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的particle文档

https://docs.particle.io/reference/firmware/core/打印-

我找到了答案。不确定这是否适用于普通的c++,但对于运行在particle spark上的c++版本,解决方案如下:

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

这给了我一个可以处理的字符串!