getline() frage



  • hoi.
    kann mir jemand die funktion des getline's erklären?

    ich verstehe sie nicht und möchte aber später ein bestimmtes Zeichen oder einen bestimmten String in einer Datei in einer bestimmten Zeile finden und/oder schreiben oder ausgeben.

    am besten wäre es, wenn ihr mir es so wie für einen anfänger erklären würdet. hab zwar auf cppreference geschaut, hab es aber trodzdem nicht verstanden 😞

    mfg



  • std::getline befindet sich im Header <string>

    #include <string>
    

    Funktionsrumpf:

    std::istream& getline(std::istream& in, std::string& dest, char delim );
    

    Die Funktion ermöglicht dir Zeichen aus einem Stream-Buffer Daten in einen String zu schreiben/kopieren. Der Vorgang wird abgebrochen, wenn das Zeichen im Stream-Buffer gleich delim ist. delim ist, wenn du es nicht extra angibst '\n' d.h. das Zeichen für eine neue Zeile was z.B. erzeugt wird, wenn du nach einer Eingabe eines Satzes auf [Enter] drückst.

    Im Gegensatz zu std::cin, bricht die Funktion nicht bereits nach einem Whitespace (Leerzeichen) ab. Natürlich kann man den std::istream std::cin auch mit std::skipws dazu bringen, auch wenn Leerzeichen drin sind, weiter einzulesen, doch die Leerzeichen gehen dann verloren (siehe std::skipws).

    Du kannst aber z.B. auch std::getline(file_stream, dest_string, ';'); nehmen. Dann werden die Zeichen aus dem Stream file_stream in dest_string kopiert, bis ein ';' vorgefunden wird.(Leerzeichen werden auch kopiert)

    Fazit
    Die Funktion std::getline ließt dir Daten aus einem beliebigen Stream in einen String und behandelt dabei Leerzeichen nicht gesondert.



  • Hier ist es einfach erklärt
    http://de.wikibooks.org/wiki/C++-Programmierung:_Dateizugriff

    #include "stdafx.h"
    
    #include "iostream"                // Standardstream-Funktionaliät einbinden
    #include "fstream"                 // ofstream und ifstream einbinden
    
    using namespace std;
    
    int main(void)
    {
    // Das Array das die Zeichen aufnimmt
            char Eingabe[256];
            char brechAbBei = 'x';
    
    //Erzeuge Filestream auf das File
            ifstream Quelldatei("Deine_Datei.txt");
    //Lädt 256 Zeiche aus der Datei in das char Array oder bis er auf ein x stößt
            Quelldatei.getline(stringvariable,256, brechAbBei);
    
            Quelldatei.close();
            cout << Eingabe;
            system("PAUSE");
            return 0;
    }
    

    Anschließen könntest du Eingabe durchsuchen...





  • nils2 schrieb:

    Hier ist es einfach erklärt
    http://de.wikibooks.org/wiki/C++-Programmierung:_Dateizugriff

    #include "stdafx.h"
    
    #include "iostream"                // Standardstream-Funktionaliät einbinden
    #include "fstream"                 // ofstream und ifstream einbinden
     
    using namespace std;
     
    int main(void)
    {
    // Das Array das die Zeichen aufnimmt
            char Eingabe[256];
            char brechAbBei = 'x';
    
    //Erzeuge Filestream auf das File
            ifstream Quelldatei("Deine_Datei.txt");
    //Lädt 256 Zeiche aus der Datei in das char Array oder bis er auf ein x stößt
            Quelldatei.getline(stringvariable,256, brechAbBei);
    
            Quelldatei.close();
            cout << Eingabe;
            system("PAUSE");
            return 0;
    }
    

    Anschließen könntest du Eingabe durchsuchen...

    gibt es nicht einfach etwas, dass den DRITTEN Parameter in std::string umcastet?
    ich möchte ein Wort finden 😉

    mfg



  • Du meinst, du willst solange suchen, bis du ein Wort (String) gefunden hast.
    Wenn du mit getline() eine Zeile in einen String eingelesen hast, kannst du dessen Methoden benutzen.

    // DELETED

    Edit:
    OK, hab mich mit der Funktion find() aus <algorithms> vertan.

    Also so wie (D)Evil geschrieben hat... (nun steht's nur noch 2:1 für mich...)



  • std::string string;
    std::getline(std::cin, string); // der letzte Parameter kann meist wegfallen (== '\n')
    
    const std::size_t pos(string.find("wort"));
    if (pos == std::string::npos)
        std::cerr << "Wort \"wort\" nicht gefunden!" << std::endl;
    else
        std::clog << "Wort an Position " << pos << " gefunden!" << std::endl;
    

    meinst du wohl TH ...


Anmelden zum Antworten