Erkennen ob eine Variable Zahl oder Buchstabe

DiGn1TaS

Grünschnabel
Hallo,
Folgende Ausgangssituation :
Ich habe eine Datei , die z.b. folgendermaßen aussicht :

Geschwindigkeitsfeld y = 0.1
X-Werte Geschwindigkeit
0 1
. .
. .
. .
. .
Geschwindigkeitsfeld y = 0.2
usw.

Nun möchte ich sowohl die x-werte als auch die y-werte
in eine Xx2-Matrix schreiben damit ich sie Verabreiten kann.
Klappt super, wenn man den "Kopf" weglässt und immer für jeden y-wert
die Daten in eine eigene Datei kopiert. Bei knapp 100 Dateien a 14 y-werten
etwas umständlich.
Daher meine Frage :
Wie kann ich mein C++-Prog dazu bringen, zu erkennen ob der gerade eingelesene
wert nun vom typ Double oder Char ist ?
Bisher habe ich herausgefunden, dass wenn ich z.b. sage , a ist char und ich speichere
eine zahl in a , dass dann a = 0 .
Allerdings kann ich dann nicht wieder z.b. a = (double)a sagen, dann kommt Müll raus ...
Wie also vorgehen ?

MfG
Sven
 
"Bisher habe ich herausgefunden, dass wenn ich z.b. sage , a ist char und ich speichere eine zahl in a , dass dann a = 0"
Das wäre mir allerdings neu...
wenn du sowas machst, kann man eigentlich nicht garantieren, welcher wert dort drinnensteht, könnte irgendwas sein

die einfachste lösung zum unterscheiden wäre doch, Vor jedes double ein d und vor jeden char ein c zu schreiben oder so ähnlich
Weil bei einer formatierten Ausgabe zu unterscheiden ob ein paar Bytes jetzt eine Kommazahl oder Buchstaben darstellen sollen, kann schwierig werden...es gibt ja auch im ASCII Ziffern und Kommas
 
Zuletzt bearbeitet:
du kannst nicht raus finden, ob etwas ein char oder ein int ist, weil das im speicher das selbe ist, double ist doppelt so groß wie char, das wäre eine eventuelle Möglichkeit, aber du kannst an Hand der ASCII Tabelle raus finden ob etwas ein Buchstabe oder eine zahl ist, wenn der wert zwischen c.a. 40 und 70 liegt ist es nen Kleinbuchstabe, beispielsweise, schau dir einfach mal die ASCII Tabelle an.
 
Wenn das wirklich stimmt, das der beim einlesen nen 0 da setzt, kannst du sie einfach wieder in den buffer schieben und neu einlesen.
 
Vielleicht hab ich das überlesen, wenn nicht unter C++ gibt es die Funktionen
C++:
isdigit(variable); // true wenn variable = ziffer, sonst false
isalpha(variable); // true wenn variable = buchstabe, sonst false
Vielleicht hilft dir das ja ein bisschen.
 
ja mein ich ja, hab nur das zitat herum vergessen,

das war die aussage von ryu 1991 ein paar beiträge weiter oben
 
Auf unserem Wndows Xp x32 hat ein char ein int und die alle 32bit = 8byte.
(zumindest habe ich es so gelernt)
Auf Vista 64 oder so sind die variablen dann entsprechend doppelt so groß
 
Hallo,
Auf unserem Wndows Xp x32 hat ein char ein int und die alle 32bit = 8byte.
(zumindest habe ich es so gelernt)
Auf Vista 64 oder so sind die variablen dann entsprechend doppelt so groß

ich hoffe euer Lehrer war kein Mathelehrer :) da, wenn 1 Byte = 8 Bit sind, nach Adam Riese 32 Bit 4 Byte sind und nicht 8.

Ein char hat 1 Byte; ein int 4 Byte auf einer 32 Bit Maschine und 8 Byte auf einer 64 Bit Maschine.

Gruß,
RedWing
 
Zurück