String nach Float

thekiller

Viceinator
Hallo,

ich lese Daten aus einer Textdatei aus. Ich lese zuerst eine float Zahl aus der Datei in einen string ein und diesen möchte ich dann mit folgender Zeile in einen "RICHTIGEN" float wert umwandeln:

Code:
*(P1x + Polygon) = StrToFloat(buffer.c_str()) / 100.0;

Das problem ist, dass bei Kommawerten wie z.B. 100.0 das Programm abstürzt aber bei Ganzzahlen nicht.
Speicher für P1x ist reserviert und funktioniert...Das habe ich ausgiebig getestet...

Code:
float *P1x;
Code:
if((P1x = (float*)malloc(Number_Of_Polys)) == NULL) {
  Application->MessageBoxA("Zu wenig Arbeitsspeicher verfügbar...", "Warnung!", MB_OK);
  return FALSE;
}

Beispiel 1(funktioniert):
Code:
  string buffer = "100";
  int Polygon = 0;
  *(P1x + Polygon) = StrToFloat(buffer.c_str()) / 100.0;
  // Das auf der Speicherstelle steht dann 100

Beispiel 2(funktioniert nicht):
Code:
  string buffer = "100.0";
  int Polygon = 0;
  *(P1x + Polygon) = StrToFloat(buffer.c_str()) / 100.0;
  // Programm stürzt ab

Als Fehlermeldung bekomme ich z.B.:

"100.0" ist kein gültiger Gleitkommawert!

Was ja ansich ja eigentlich nicht sein kann...
 
Zuletzt bearbeitet:
Ich kenne die Funktion "StrToFloat()" nicht, ist das was von Borland? Ich könnte mir vorstellen, dass diese Funktion abhängig von der Ländereinstellung ist. Also bei einem deutschen Windows müsste der String dann wahrscheinlich das Komma als Dezimaltrenner enthalten.

Gruß
MCoder
 
Ja ich glaube die ist von Borland. Ich probier mal aus mit Komma statt Punkt.

EDIT: Habs eben getestet...das war der Fehler. Das ist aber auch blöd...jetz müsste ich meine ganze Dateistruktur umändern, damit ich das mit Kommas auslesen kann.

Gibt es denn nicht noch eine andere Lösung Strings nach Float zu konvertieren? Ich hab schon so viel im Internet geschaut aber nichts davon hat wirklich funktioniert...
 
Zuletzt bearbeitet:
so zum Beispiel:
C++:
#include <string>
#include <sstream>

...

std::string strFloat = "100.0";
float       fFloat;

std::stringstream sstr(strFloat);
sstr >> fFloat;
Gruß
MCoder
 
Zurück