double to String?
-
wie kann ich im vc++ eine double to string conventieren? (dialogbasierte anwendung)
für die consolen anwendung habe ich was im faq gefunden jedoch kann ich das nicht in vc++ anwenden!
Konsolenanwendung #include <iostream> #include <string> #include <sstream> using namespace std; int main() { //******** Convert double to char ************* double d = 3.14; ostringstream Str; Str << d; string ZahlAlsString(Str.str()); cout << ZahlAlsString << endl; }
das funktioniert einwandfrei !
jedoch wenn ich einer membervariable von Listbox Typ string (z.B. m_sList1)
die variable ZahlAlsString (Stringvariable aus Bibliothek #include <string>) zuweise, zeigt er mir diesen fehler:error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)
-
Kann mir da jemand sagen, wie ich diesen Fehler beheben kann bzw. eine andere Möglichkeit wie ich double variable zu string in vc++ conventieren kann.
m_iWert=5; // Integer variable m_sList1.Format("%d",m_iWert); Ausgabe in der Listbox: 5
// Mit dieser Ausgabe bin ich zufrieden jedoch wenn ich eine double variable anstatt integer einsetze kommt da nur "guelle" raus
m_dWert=3.14 // double variable m_sList1.Format("%d",m_dWert); Ausgabe in der Listbox: 1374389535
// und das entstpricht noch lange nicht 3.14
WIESO?
-
-
Tausche das %d mit %f
-
Weil du als Format-identifier beim Format-Befehl %d angegeben hast. Das ist korrekt für Integer-Variablen. Für Fließkomma-Variablen musst du %f verwenden.
Also statt:
m_dWert=3.14 // double variable m_sList1.Format("%d",m_dWert); Ausgabe in der Listbox: 1374389535
besser:
m_dWert=3.14 // double variable m_sList1.Format(/* Wichtig ! */"%f",m_dWert); Ausgabe in der Listbox: 3.14
Eventuell noch die Zahl der Nachkommastellen begrenzen (%.2f).
(warum geht die zweite [cpp]-Anweisung eigentlich nicht?)
-
AndRo67 schrieb:
(warum geht die zweite [cpp]-Anweisung eigentlich nicht?)
Weil du in deinem cpp-Bereich keine BBCode-Formatierungen einbauen kannst.
-
Der Compiler-Fehler sagt aus, dass der verwendete Datentyp nicht in den Funktionsparameter gewandelt werden kann. Wahrscheinlich benötigt die verwendete Funktion ein char*.
Deshalb schau Dir mal die Funktionen ecvt(), fcvt() und gcvt() in der MSDN an. Da sollte der richtige Datentyp rauskommen.
-
Gehört das ins MFC-Forum?
-
Elch.. schrieb:
Gehört das ins MFC-Forum?
Jein!
Er arbeitet mit VC und hat eine Dialoganwendung - vielleicht hätte er ja mal in die FAQ geschaut und da eine Lösung für CString gefunden... Empfohlen hat es ihm ja auch niemand hier.
-
Du ja auch nicht.
Vielleicht kannst Du lapuch und mich aufklären, wie das am einfachsten mit einen CString geht. MFC ist nicht unbedingt meine Stärke.
-
Ups, Andro hatte ich überlesen...
-
av_privat schrieb:
Du ja auch nicht.
Vielleicht kannst Du lapuch und mich aufklären, wie das am einfachsten mit einen CString geht. MFC ist nicht unbedingt meine Stärke.Was für Fragen sind denn noch offen?
-
Ich glaube, keine.
Andro hat es sinngemäß gezeigt, wie man ein Double in einen CString stopft und ich habe die erste Frage so gut wie möglich beantwortet. Ich habe halt nicht die MFC bemüht.