C++ float 到 stringstream 的字符串转换失败
C++ float to string conversion failing with stringstream
我正在 particle.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&)'
编辑:link 到有关 Serial.print
的粒子文档
我找到了答案。不确定这是否适用于常规c++,但对于粒子火花上的c++版本运行,解决方案如下:
float myFloat = 6.123;
String floatString(myFloat, 2);
这给了我一个可以使用的字符串!
我正在 particle.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&)'
编辑:link 到有关 Serial.print
的粒子文档我找到了答案。不确定这是否适用于常规c++,但对于粒子火花上的c++版本运行,解决方案如下:
float myFloat = 6.123;
String floatString(myFloat, 2);
这给了我一个可以使用的字符串!