Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » ifstream

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
27.10.2005, 15:27 Uhr
~Sandra
Gast


Hi,
ich habe mit ifstream eine Datei geöfnet und möchte nun in der datei zu einer bestimmten Zeile mit bestimmten Inhalt Springen. Muß ich die Datei mit getLine immer durchgehen und bis ich die Zeile gefunden habe oder gibs dafür ne function?
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.10.2005, 16:04 Uhr
ao

(Operator)


Hi Sandra,

wenn du die Byte-Position kennst, kannst du ifstream::seekg verwenden. Sonst mit getline durchgehen und suchen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.10.2005, 16:07 Uhr
~Sandra
Gast


Schade ich dachte es gibt sowas wie findLine("Hallo") oder so!
Trotzdem Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.10.2005, 17:00 Uhr
virtual
Sexiest Bit alive
(Operator)


Nee, aber es geht trotzdem ganz einfach:

C++:
#include <iostream>
#include <fstream>
#include <string>

int main(
    int argc,
    char** argv) {

    if (argc!=3) {
        std::cerr<<"usage: mygrep <pattern> <file>"<<std::endl;
        return 1;
    }

    std::fstream in(argv[2]);
    std::string search(argv[1]);

    if (!in) {
        std::cerr<<"Cannot open "<<argv[2]<<" for reading"<<std::endl;
        return 2;
    }

    int counter = 0;
    while (in) {
        std::string line;
        std::getline(in, line);
        ++counter;

        if (line.find(search)!=std::string::npos) {
            std::cout<<counter<<"\t"<<line<<std::endl;
        }
    }

    return 0;
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.10.2005, 17:14 Uhr
predator



@virtual

Ich hab mal ne Frage zu deinem Code:

Was bedeutet das
C++:
std::string::npos
?
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.10.2005, 09:31 Uhr
virtual
Sexiest Bit alive
(Operator)


npos ist eine Konstante, welche in std::string definiert ist. std::string::npos steht für "Keine Position". Als Rückgabewert bedeutet diese meist sowas wie "nicht gefunden".
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.10.2005, 10:34 Uhr
predator



Ach so, dann ist es klar...

Danke
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
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: