Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Daten-Datei zeilenweise auslesen und verarbeiten?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.05.2005, 15:11 Uhr
~knut
Gast


Hallo.

Viell. etwas nichtssagend der Titel, deshalb hier einfach mal ein Beispiel meiner Datei:


Code:
W test einfeld nocheins
X bla nureinfeld
Y nochwas einfeld nocheins undnocheins
Z blubb einfeld einzweites


Das heisst, in der 1. "Spalte" steht jeweils ein gleichwertiges Datum, dahinter allerdings koennen weitere Spalten in variabler Anzahl folgen. Dazu muss ich den Inhalt der 2. Spalte kennen, dann weiss ich auch, wieviele Felder noch folgen.

Ich muesste theoretisch:
- Datei zeilenweise einlesen
- jede Zeile wiederum in die "Woerter" (durch Leerzeichen getrennt) aufteilen
- Dann das 2. "Wort" anschauen und daraufhin mit den weiteren Feldern entsprechend weiterarbeiten.

Nur: Wie realisiert man soetwas in C++?
Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.05.2005, 15:13 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wortweise einlesen geht doch auch, wenn man fstream's benutzt doch einfach var >> wort
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.05.2005, 15:18 Uhr
CaesarCortezz
minderer Student


hi
also zum einlesen einer ganzen zeile nimmst du

C++:
getline(cin, variable);



das trennen wird dann etwas schwieriger (hat mir der windalf mal geschrieben )


C++:
vector<string> seperate_words(string sep_string)           // funktion zum trennen der

{                                                          // Wörter in Befehl und Parameter

    vector<string> rv;

    size_t a,b;

    for(a=b=0; string::npos!=(b=sep_string.find(' ',b)); a=++b)

        rv.push_back(sep_string.substr(a,b-a));

     if(a-b)

        rv.push_back(sep_string.substr(a,sep_string.size()));

    return rv;

}



dann kannst du

C++:
string zeile;
zeile = seperate_words(variable);


machen

danach hast du ein array aus den spalten die du mit zeile[0] usw. aufrufen kannst.

MfG Caesar
--
Thus spake the master programmer:

``When the program is being tested, it is too late to make design changes.''
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.05.2005, 15:29 Uhr
ao

(Operator)



Zitat von CaesarCortezz:
... dann kannst du

C++:
string zeile;
zeile = seperate_words(variable);




Du meinst

C++:
string zeile;
vector<string> words;
words = separate_words (zeile);


ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.05.2005, 16:30 Uhr
CaesarCortezz
minderer Student


FJN.
ja man muss einen vector nehmen, sonst kann das ganze ja gar nicht funzen ;-)
Rückgabetyp ist ja auch ein vector
--
Thus spake the master programmer:

``When the program is being tested, it is too late to make design changes.''
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: