C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Zahlen aus Datei einlesen

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Dominik Dell
Guest





PostPosted: Mon Apr 26, 2004 3:46 pm    Post subject: Zahlen aus Datei einlesen Reply with quote



Hallo,
ich moechte gerne Zahlen aus einer Datei einlesen. Die Datei soll dabei
etwa folgendermassen aussehen:
25
m1
Masse 1
50
m2
Masse 2
100
E
Energie

Die Zahlen am Anfang der Zeile sollen in Variablen gespeichert werden.
Der Rest ist Kommentar und soll ignoriert werden. Was ich dazu gefunden
habe, ist <fstream.h> und die Klasse ifstream.
Ich habe bis jetzt folgenden einfachen Versuchs-Code:

#include<iostream.h>
#include<fstream.h>

int main()
{
ifstream g("test.in");
double content[3];

for(int i = 0; i<=2; i++)
{
g >> content[i];

cout << content[i] << endl;
}

g.close();

return 0;
}

Das funktioniert aber nur, wenn in der Datei nur Zahlen stehen. Wie kann
ich erreichen, dass die Kommentare ignoriert werden und das Programm
nach dem Einlesen der Zahl am Anfang der Zeile in die naechste Zeile geht?
Wo kann ich mehr ueber fstream / ifstream lesen? Oder welche anderen
Moeglichkeiten, das umzusetzen sind sinnvoll?

Danke
Dominik

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Ralph Oliver Schunk
Guest





PostPosted: Tue Apr 27, 2004 7:46 am    Post subject: Re: Zahlen aus Datei einlesen Reply with quote



Dominik Dell <dell (AT) lpsc (DOT) in2p3.fr> wrote:



Quote:
Hallo,
ich moechte gerne Zahlen aus einer Datei einlesen. Die Datei soll dabei
etwa folgendermassen aussehen:
25
m1
Masse 1
50
m2
Masse 2
100
E
Energie

Hallo Dominik,
da ist also eine Zeile mit einen Wert und zwei
Zeilen mit einem Kommentar.

Ich hab' mal ein bißchen an Deinem Programm
rumgeschrieben Surprised). Ich hoffe, es hilft.

Der Code compiliert, ich hab' ihn aber nicht getestet.
Fehlerbehandlung fehlt.

Es lohnt sich, die Klassen string und vector
genauer anzusehen.

Gruß
Ralph
--
Es gibt 10 Arten von Menschen,
die, die Binär lesen können,
und die, die es nicht können.





//> #include<iostream.h>
//> #include<fstream.h>

// Standard-Header ohne .h
#include<iostream>
#include<fstream>

// und ein bischen was zusätzliches
#include<string>
#include<vector>

// Alle Klassen der STL liegen im namepace std, also
// teilen wir das dem Compiler mit.
using namespace std;


int main()
{
ifstream g("test.in");

// Was machst du, wenn Du die Größe der Datei nicht kennst?
// double content[3];
// Besser:
vector<double> content;

// Value ( oder besser: input iterator )
double value;

// müll
string comment;


// Was machst du, wenn Du die Größe der Datei nicht kennst?
//> for(int i = 0; i<=2; i++)
// Besser:
while ( g >> value ) // Geht nur, wenn die Datei mit einem Wert beginnt.

{
// zwei zeilen: kommentar
getline( g, comment ); // verwerfen
getline( g, comment ); // verwerfen

content.push_back( value );
cout << content.back() << endl;
}
// Wie viele Werte hab' wir den jetzt?
cout << content.size() << endl;

// OK (g wird beim verlassen des scopes automatisch geschlossen).
g.close();

return 0;
// oder:
// return !g.eof(); /* Rückgabe != 0, wenn Lesefehler*/
}


--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Werner Salomon
Guest





PostPosted: Tue Apr 27, 2004 9:05 am    Post subject: Re: Zahlen aus Datei einlesen Reply with quote



Dominik Dell <dell (AT) lpsc (DOT) in2p3.fr> wrote

Quote:
ich moechte gerne Zahlen aus einer Datei einlesen. Die Datei soll dabei
etwa folgendermassen aussehen:
25
m1
Masse 1
50
m2
Masse 2
100
E
Energie

Die Zahlen am Anfang der Zeile sollen in Variablen gespeichert werden.
Der Rest ist Kommentar und soll ignoriert werden. Was ich dazu gefunden
habe, ist <fstream.h> und die Klasse ifstream.
Hallo Dominik,


<fstream.h> ist veraltet. <fstream> ist Deine Wahl.

Quote:
#include<iostream.h
#include
int main()
{
ifstream g("test.in");
double content[3];
Benutze die Container der STL - hier z.B.: std::vector< double
[...]
g.close();
... brauchst Du nicht, das wird im Destruktor von ifstream erledigt


Quote:
[...] Wie kann
ich erreichen, dass die Kommentare ignoriert werden und das Programm
nach dem Einlesen der Zahl am Anfang der Zeile in die naechste Zeile geht?
z.B.:

// --- 8< ---
#include #include <vector>
#include <limits> // numeric_limits<>


int main() {
using namespace std;
ifstream file( "test.in" ); // Datei oeffnen
vector< double > zahlen;
int n = 3; // Anzahl der Zahlen
for( double zahl; n && file >> zahl; --n ) {
zahlen.push_back( zahl );
// Kommentare überlesen (3x Zeilenende)
for( int nComment = 3; nComment; --nComment )
file.ignore( numeric_limits< int >::max(),
ifstream::traits_type::to_int_type( 'n' ) );
}
return 0;
}
// --- 8< ---
Quote:
Wo kann ich mehr ueber fstream / ifstream lesen?
Standard C++ IOStreams and Locales

von Angelika Langer, Klaus Kreft
ISBN: 0201183951

Gruß
Werner

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Karl Heinz Buchegger
Guest





PostPosted: Tue Apr 27, 2004 9:08 am    Post subject: Re: Zahlen aus Datei einlesen Reply with quote

Dominik Dell wrote:
Quote:

Das funktioniert aber nur, wenn in der Datei nur Zahlen stehen. Wie kann
ich erreichen, dass die Kommentare ignoriert werden und das Programm
nach dem Einlesen der Zahl am Anfang der Zeile in die naechste Zeile geht?
Wo kann ich mehr ueber fstream / ifstream lesen? Oder welche anderen
Moeglichkeiten, das umzusetzen sind sinnvoll?

Meiner Meinung nach ist es immer noch am einfachsten, das ganze nach
dem uralten Schema zu machen:

lies eine Zeile komplett als String
Zerlege den String so wie Du ihn brauchst.

Also nichts mit >> direkt vom File. getline und std::string sind
die Werkzeuge der Wahl. Nimm noch einen stringstream mit dazu
und du hast die Bausteine beisammen.

--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Tue Apr 27, 2004 10:44 am    Post subject: Re: Zahlen aus Datei einlesen Reply with quote

Ralph Oliver Schunk wrote:

Quote:
Hallo Dominik,
da ist also eine Zeile mit einen Wert und zwei
Zeilen mit einem Kommentar.

Ich hab' mal ein bißchen an Deinem Programm
rumgeschrieben Surprised). Ich hoffe, es hilft.

Der Code compiliert, ich hab' ihn aber nicht getestet.
Fehlerbehandlung fehlt.

Es lohnt sich, die Klassen string und vector
genauer anzusehen.

Gruß
Ralph

Es gibt 10 Arten von Menschen,
die, die Binär lesen können,
und die, die es nicht können.

Nein, es gibt 11 Arten,
die, die den Unterschied zwischen dual und binär kennen,
und die, die ihn nicht kennen.

*SCNR*

Übrigens wäre es geschickter, wenn du dein Beispielprogramm nicht in die
Signatur schreiben würdest. Das erleichtert das Antworten.

     // zwei zeilen: kommentar
     getline( g, comment ); // verwerfen
     getline( g, comment ); // verwerfen

Zum Verwefen eignet sich ignore() sogar noch besser.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Ralph Oliver Schunk
Guest





PostPosted: Tue Apr 27, 2004 11:01 am    Post subject: Re: Zahlen aus Datei einlesen Reply with quote

Rolf Magnus <ramagnus (AT) t-online (DOT) de> wrote:
Quote:
Ralph Oliver Schunk wrote:


Es gibt 10 Arten von Menschen,
die, die Binär lesen können,
und die, die es nicht können.

Nein, es gibt 11 Arten,
die, die den Unterschied zwischen dual und binär kennen,
und die, die ihn nicht kennen.

Das Dualsystem ist automatisch auch ein Binär system,
jedoch gilt das nicht umgekehrt. (richtig?)

Quote:

Übrigens wäre es geschickter, wenn du dein Beispielprogramm nicht in die
Signatur schreiben würdest. Das erleichtert das Antworten.

Copy&Paste Artefakt.
Sensoren neu geeicht.

Gruß
Ralph

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Tue Apr 27, 2004 11:18 am    Post subject: Re: Zahlen aus Datei einlesen Reply with quote

Ralph Oliver Schunk wrote:

Quote:
Rolf Magnus <ramagnus (AT) t-online (DOT) de> wrote:
Ralph Oliver Schunk wrote:


Es gibt 10 Arten von Menschen,
die, die Binär lesen können,
und die, die es nicht können.

Nein, es gibt 11 Arten,
die, die den Unterschied zwischen dual und binär kennen,
und die, die ihn nicht kennen.

Das Dualsystem ist automatisch auch ein Binär system,
jedoch gilt das nicht umgekehrt. (richtig?)

Genau. Meine 11 für dezimal 2 war z.B. ein Gray-Code, der auch binär
ist.

Quote:
Übrigens wäre es geschickter, wenn du dein Beispielprogramm nicht in
die Signatur schreiben würdest. Das erleichtert das Antworten.

Copy&Paste Artefakt.
Sensoren neu geeicht.

Gute Arbeit, Fähnrich ;-)

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.