Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nahar Senior JLI'ler
Alter: 36 Anmeldedatum: 16.07.2003 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 17.07.2004, 10:01 Titel: Streams und ich find den Fehler nicht |
|
|
Naja, das übliche: Daten aus einer Datei auslesen. Aber ich find halt genialerweise meinen Fehler nicht.
So sieht die Datei aus:
Code: |
1.545 8.55 Spieler1
45.22 78.5 Kamera
|
Ich will Feststellen wieviele Datensätze in der Datei drin sind:
Code: |
for(int c=0;!lesen.eof();c++)
{
lesen >> Floatvariable;
lesen >> Floatvariable;
lesen >> string;
cout << Floatvariable << "\t" << Floatvariable << "\t" << string;
}
|
Aber irgendwie bleibt es immer an der ersten Zeile hängen, undversucht die hundertfach auszulesen. Zumindest gib es die vielfach aus.
Sieht irgendjemand den Fehler? Danke. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 17.07.2004, 10:25 Titel: |
|
|
Ich arbeite zwar nicht mit Streams, aber du liest eine Zeichenkette aus!
Und musst dann den ersten Teil der Zeichenkette in eine float Variable umwandeln. Mir fehlt im Moment nur eine Umwandlungsfunktion ein atoi() such danach in der MSDN und dann müsstest du schnell durch Links die du dort findest zu deiner Funktion kommen die ein String in eine Float Variable konventiert.
Das sähe dann so aus:
char string[] = "3.14";
float eine_float_var = entsprechende_funktion(string);
... _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Nahar Senior JLI'ler
Alter: 36 Anmeldedatum: 16.07.2003 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 17.07.2004, 10:30 Titel: |
|
|
Die Funktion heisst atof
Aber der Vorteil an Streams ist das sie eben beim einlesen (falls möglich) das richtige Format auslesen.
Das ist schon eine floatvariable, und der WErt ist auch richtig. Das Problem ist das das Programm eben nicht zur zweiten Zeile uspringt, sodner da hängen bleibt. |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 17.07.2004, 10:59 Titel: |
|
|
Is das ne Text oder ne Binärdatei? In einer Binärdatei gibts ja "nich" Zeilen in diesem Sinne, un da wird der Dateipointer automatisch immer auf den nächsten Datensatz gesetzt, wenn du mithilfe des Operators << einen Datensatz gelesen hast...
Wenn das eine Textdatei ist, was ich vermute, würde ich dir empfehlen die Daten mittels getline() zu lesen, un anschließend die strings umzuwandeln...
Wie immer keine Gewähr |
|
Nach oben |
|
|
Nahar Senior JLI'ler
Alter: 36 Anmeldedatum: 16.07.2003 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 17.07.2004, 11:32 Titel: |
|
|
Ist eine Textdatei. Aber ich hab mir das jetzt schon in dne Kopf gesetzt es so machen zu wollen... menno . Naja, einstweilen werd ichs so machen, aber wenn jemand weiss an was es liegen könnte... - es interessiert mich immer noch. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 17.07.2004, 12:27 Titel: |
|
|
nimm doch einfach eine Struktur?
Speichere dort die Werte rein, speichere die Struktur in die Datei und lies sie dann später wieder aus. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Nahar Senior JLI'ler
Alter: 36 Anmeldedatum: 16.07.2003 Beiträge: 267
Medaillen: Keine
|
Verfasst am: 17.07.2004, 12:39 Titel: |
|
|
Danke für die Antworten. Des Rätsels lösung war die Klasse string. Mit handelsüblichen C-Strings hats getan.
Aber mal was anderes: Wie kann den Pointer für Streams wieder auf Dateianfang setzten? ifstream.seekg(0,ios_base::beg) hat bei mir irgendwie keinen Effekt. |
|
Nach oben |
|
|
|