String -> double?

Hi C+±Experten,

folgendes Problem: Ich habe eine Zahl, welche in einer String-variablen enthalten ist. Diese Zahl soll nun in einer Double-variablen gespeichert werden, aber wie?

Die Funktion atof() kann nicht verwendet werden, da hier ein char* als Eingabeparameter erwartet wird.

#include

string strVar = „27“;
double dVar = 0;

dVar = strVar; //Fehler! Aber hier sollte der Wert übergeben werden.

Vielleicht könnt ihr mir helfen.

Schönen Gruß
Ulrich

Hallo Ulrich,

Die Funktion atof() kann nicht verwendet werden, da hier ein
char* als Eingabeparameter erwartet wird.

#include

string strVar = „27“;

Ich kenne den Variablentyp string gar nicht, aber string kann an
dieser Stelle nichts anderes als ein char* sein, da „27“ nichts
anderes als einen const char* an die Variable links vom
Zuweisungsoperator zurückgibt; genauer gesagt einen
char* auf die Adresse, in der die ‚2‘ steht; da „27“ im Speicher
dann als ‚2‘,‚7‘,’\0’ abgelegt wird, erkennt C/C++ damit auch
am ‚\0‘ den Ende dieser Zeichenkette (also falls string irgendwo
existiert, dann nur in der Art typedef char* string),
d.h.

#include // hier steht double atof(const char*s)
typedef char* string;

string strVar = „27“;
double dVar = 0;

dVar = atof(strVar); //Funktioniert einwandfrei

Gruß, Walter

Hallo,

welchen Compiler benutzt Du ?
In Borland C++Builder gehts einfach per AnsiString.ToDouble() Methode…

Gruss
Hans

Ich kenne den Variablentyp string gar nicht…

string ist wohl der am meisten genutzte C+±Datentyp, der einfach eine Sequenz von Zeichen darstellt. C++ ohne string-Datentyp ist wie Kirche ohne Amen.

Grüsse Safog

Hallo!

Probiers mal so:

#include 

string strVar = "27";
double dVar = 0;

dVar=atof( strVar.data( ));

data( ) ist eine Memberfunktion der string-Klasse, welche einen Pointer auf das erste Element deines Strings strVal zurückgibt. Da strVal im Prinzip nur aus einer Reihe von chars besteht, ist damit die atof( )-Funktion zufrieden.

Bin voll des Lobes für Deine konsistente Namensgebung bei den Variablen. Findet man selten hier im Brett!

Grüsse Safog

Oohh peinlich,

noch ein Beweis, daß ich als alter C-Programmierer immer
noch nicht C++ denke,

(programmiere C++ nur mit VisualC++ und habe da einfach ohne
langes Suchen die CString-Klasse aus MFC benutzt und in dem
C+±Buch, dass hier vor mir liegt, stand auch nichts von der
string-C++Standardbibliothek (böses,böses Buch :frowning:)

Gruss, Walter

Ich habs jetzt:

Dies Vorweg: String ist eine C+±Klasse der Standardbibliothek.

Folgend erreicht man die double-konvertierung:

string strVar = „27“;
double dVar;

dVar = atof(strVar.data());

Die Data-funktion wandelt den String in char* um.

Danke nochmals für die Antworten.

Gruß
Ulrich

Ist genau der Inhalt meines Postings vom 12.04.

Grüsse Safog

Ist genau der Inhalt meines Postings vom 12.04.

Grüsse Safog

Sorry, habe ich überlesen.

Gruß Ulrich