tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1149
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Chimmeke Chimmeke ist offline Grünschnabel
    Registriert seit
    May 2010
    Beiträge
    2
    Hallo,

    ich möchte gerne einen String durchsuchen und dabei prüfen ob dieser ein besonderes Zeichen enthält. Meine Idee war anfangs mit string.find("Zeichen") die Sache zu erledigen, doch das hat nicht funktioniert. Stattdessen wurde der gesamte Text ausgegeben. Mein Code bis jetzt ist dieser:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    fstream css;
    string line;
     
    css.open("C:/HtmlManager/styles/styles.css",ios::in);
    if (!css)
        cout <<"Datei kann nicht ge" <<oe <<"ffnet werden!\n";
    else
    {
        while(!css.eof())            // solange Dateiende noch nicht erreicht ist
        {
            getline(css, line);              // Jede Zeile einlesen
            if (line.find("#"))                             // funktioniert leider nicht
                cout <<line <<'\n';         // ausgeben
        }
    }
    css.close();
     

  2. #2
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Da würde es halt manchmal Sinn machen die Referenz anzuschauen und dadurch zu erkennen, was std::string::find zurückgibt.

    Bei einem Fehler wird std::string::npos (was zumindest bei meiner Implementierung -1 ist) zurückgegeben. Wäre ja auch durchaus sinnlos, wenn 0 einen Fehler indizieren würde, schliesslich kann ja dein # auch an 0-ter Stelle im string stehen.
     

  3. #3
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von Chimmeke Beitrag anzeigen
    ich möchte gerne einen String durchsuchen und dabei prüfen ob dieser ein besonderes Zeichen enthält. Meine Idee war anfangs mit string.find("Zeichen") die Sache zu erledigen, doch das hat nicht funktioniert. Stattdessen wurde der gesamte Text ausgegeben.
    Mein Code bis jetzt ist dieser:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    fstream css;
    string line;
     
    css.open("C:/HtmlManager/styles/styles.css",ios::in);
    if (!css)
        cout <<"Datei kann nicht ge" <<oe <<"ffnet werden!\n";
    else
    {
        while(!css.eof())             // solange Dateiende noch nicht erreicht ist
        {
            getline(css, line);                 // Jede Zeile einlesen
            if (line.find("#"))                             // funktioniert leider nicht
                cout <<line <<'\n';            // ausgeben
        }
    }
    css.close();
    ich muss zugeben, dass ich Deine Frage nicht verstehe ... der Code macht doch genau das, was Du beschrieben hast
    Du prüfst, ob die eingelesene Zeile eine Raute enthält - und wenn JA gibst Du sie aus ......

    Erkläre mal genau was Du meinst - und poste ggf. mal, was genau Du einliest und was ausgegeben wird !

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Zitat Zitat von Chimmeke Beitrag anzeigen
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    fstream css;
    string line;
     
        while(!css.eof())            // solange Dateiende noch nicht erreicht ist
        {
            getline(css, line);              // Jede Zeile einlesen
                    ...
        }
    }
    Das funktioniert so nicht. Richtig:
    Code cpp:
    1
    2
    3
    
    while (getline(css, line)) { // solange auch wirklich eine Zeile eingelesen werden konnte
      ...
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Chimmeke Chimmeke ist offline Grünschnabel
    Registriert seit
    May 2010
    Beiträge
    2
    Alles klar, ich habe mir diese Referenz angeschaut und dann meinen Code auch ein bisschen umgeschrieben. Der Code sieht jetzt so aus und es funktioniert.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    fstream css;
    string line;
    size_t found;
     
    css.open("C:/HtmlManager/styles/styles.css",ios::in);
    if (!css)
        cout <<"Datei kann nicht ge" <<oe <<"ffnet werden!\n";
    else
    {
        while(getline(css, line))                   // solange Dateiende noch nicht
        {
            found = line.find("#");
            if(found != string::npos)
                cout <<line <<'\n';             // ausgeben
        }
    }
    css.close();
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 05.12.10, 23:07
  2. String durchsuchen
    Von Sasser im Forum PHP
    Antworten: 5
    Letzter Beitrag: 17.02.10, 01:31
  3. Antworten: 7
    Letzter Beitrag: 23.11.09, 19:22
  4. String durchsuchen
    Von trolly im Forum C/C++
    Antworten: 29
    Letzter Beitrag: 11.05.09, 17:23
  5. String durchsuchen
    Von reuabreliz im Forum PHP
    Antworten: 1
    Letzter Beitrag: 29.05.08, 12:17

Stichworte