2016-10-13 2 views
3

Je travaille sur la plateforme particle.io Spark, actuellement bloquée en essayant d'imprimer un flottant sous forme de chaîne. J'ai vu quelques solutions où vous employez un train de chaîne pour convertir le flotteur.Conversion float en chaîne C++ échouée avec stringstream

Ma mise en œuvre se présente comme suit ci-dessous:

#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()); 
} 

Il en résulte la sortie suivante:

Temp 1: 
Temp 2: 21.35 
6 

En outre, ce ne peut pas compiler:

Serial.println(tempCString); 

Avec l'erreur suivante :

error: no matching function for call to 'USBSerial::println(std::string&)' 

Edit: lien vers docs de particules sur les Serial.print

https://docs.particle.io/reference/firmware/core/#print-

+0

Qu'est-ce que 'Serial'? Êtes-vous sur Arduino? –

+0

Semblable à Arduino, j'utilise une étincelle particle.io. – koverda

+0

Il se peut que vous deviez fournir un [MCVE] reproduisant votre problème et omettant les pièces non standard. –

Répondre

0

J'ai trouvé la réponse. Je ne sais pas si cela est vrai pour C++ régulière, mais pour la version de C++ en cours d'exécution sur l'étincelle de particules, la solution est la suivante:

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

Cela me donne une chaîne que je peux travailler avec!