Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

26.11.2011, 00:00

double in String konvertieren bzw. casten

Guten Abend,
ich suche eine Möglichkeit, eine Double-Variable in einen String oder Char-Array zu konvertieren.

Ich habe gerade das 10te Kapitel durchgearbeitet und habe mir selber eine kleine Aufgabe überlegt. Es geht ganz einfach um einen Rechner.
In Editbox a und b werden Werte eingetragen (double) und diese werden dann verrechnet und in Editbox c ausgegeben.

Doch leider muss ich einige Schwierigkeiten feststellen:
-GetWindowText kann ja nur Strings auslesen, also muss ich (anscheinend) das CharArray in eine double-Variable konvertieren
(Das hab ich mit Atof gemacht)
-SetWindowText wiederum kann nur CharArrays / Strings als Parameter übernehmen.... und da ist mein Problem: wie geht das?

Ich habe mich schon den ganzen Abend erkundigt, doch ich fand keine Antwort. Lediglich die Funktion itoa schien zu helfen, doch diese funktioniert nur bei integers...

Daher meine Frage: kennt ihr eine andere Funktion womit man doubles -> strings konvertieren kann oder kennt ihr andere funktionen zum schreiben in Editboxen?

Danke schonmal



PS: Möglichst keine sehr komplizierten Funktionen, da ich noch nicht sehr viel Erfahrungen gesammelt hab :)


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
char    c[100];char V[100];double  Zahl_c;
double  Zahl_V;
double  m;

GetWindowText (hEdit_C, c, 100);GetWindowText (hEdit_V, V, 100);
Zahl_c = atof(c);Zahl_V = atof(V);
m = Zahl_c * Zahl_V;

SetWindowText (hEdit_m, m); <--- funktioniert nicht

2

26.11.2011, 00:04

Im Header sstream.h gibt es den stringstream:

C-/C++-Quelltext

1
2
3
std::stringstream ss;
ss << zahl;
SetWindowText(..., ss.str().c_str());

3

26.11.2011, 11:50

http://www.boost.org/doc/libs/1_48_0/doc…xical_cast.html

Boost ist einfach so gut, dass man es einfach installieren MUSS:

C-/C++-Quelltext

1
2
3
4
#include <boost/lexical_cast.hpp>


SetWindowText(..., boost::lexical_cast<string>(zahl).c_str());


Aber: WinAPI ist sowas von veraltet. Zum rumspielen ist es ok, aber sobald du irgendetwas ernsthaftes Programmieren möchtest, solltest du zu Qt oder ähnlichem Wechseln. Das erspart dir eine Menge.

(Für die Anfang ist die Stringstream Lösung evtl. einfacher (lexical_cast macht auch nicht viel anders), aber boost und Qt würde man halt benutzen, wenn man etwas fortgeschrittener ist.)
Lieber dumm fragen, als dumm bleiben!

4

26.11.2011, 11:53

Vielen Dank, funktioniert alles :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

26.11.2011, 11:55

Aber: WinAPI ist sowas von veraltet. Zum rumspielen ist es ok, aber sobald du irgendetwas ernsthaftes Programmieren möchtest, solltest du zu Qt oder ähnlichem Wechseln. Das erspart dir eine Menge.

Was erspart es? Ärger jedenfalls nicht, dafür ist Qt sicher nicht die beste Wahl ;) WinAPI ist aber sicher auch nicht mehr so modern, da gibt es mittlerweile genug komfortablere Frameworks oben drauf.
Aber zu sagen, dass man mit WinAPI nichts "ernsthaftes" programmieren sollte und stattdessen lieber Qt nehmen sollte, das halte ich für ausgemachten Unfug. Qt hat auch nichts mit "fortgeschrittener" zu tun, sondern eigentlich nur dem Wunsch nach Plattformunabhängigkeit. Wenn man die aber nicht will, dann gibt es genug OS-spezifische GUI-Frameworks, die absolut entspannter sind.

Boost ist aber in der Tat schon eher das, was der Name sagt und was man definitiv mal gesehen haben sollte.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

26.11.2011, 14:40

std::to_string
Mich wundert, dass darauf keiner hingewiesen hat.

MfG
Check

7

26.11.2011, 18:08

Was erspart es? Ärger jedenfalls nicht, dafür ist Qt sicher nicht die beste Wahl ;) WinAPI ist aber sicher auch nicht mehr so modern, da gibt es mittlerweile genug komfortablere Frameworks oben drauf.
Aber zu sagen, dass man mit WinAPI nichts "ernsthaftes" programmieren sollte und stattdessen lieber Qt nehmen sollte, das halte ich für ausgemachten Unfug. Qt hat auch nichts mit "fortgeschrittener" zu tun, sondern eigentlich nur dem Wunsch nach Plattformunabhängigkeit. Wenn man die aber nicht will, dann gibt es genug OS-spezifische GUI-Frameworks, die absolut entspannter sind.

Ja, ich woltle damit nicht ausdrücken, dass jeder Qt benutzen sollte, sondern dass man sich ein Framework suchen sollte, um die WinAPI zu ersetzen. Weil es eben moderneres und komfortableres gibt. Hab auch gehört, dass .NET ganz gut sein soll, aber persönlich noch nicht damit gearbeitet, daher habe ich Qt als Beispiel genannt, weil ich damit halt am meisten mache (und daher auch das Argument mit dem Ärger nicht verstehe, aber ist wohl alles eine Frage dessen, was man kennt).
Lieber dumm fragen, als dumm bleiben!

Teiby

Frischling

Beiträge: 42

Beruf: Ausbildung

  • Private Nachricht senden

8

30.11.2011, 21:17

C-/C++-Quelltext

1
2
3
double zahl = 133;
char Buffer[64];
sprintf(Buffer, "%f", zahl);


wäre auch eine möglichkeit. ist auch ein char und kein string. aber für deine funktion brauchste sowieso ein char array

Werbeanzeige