Anzeige:
Ergebnis 1 bis 8 von 8

Thema: C++: Wie richtig Strings schneiden, überprüfen usw.?

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.01.2005
    Beiträge
    20

    C++: Wie richtig Strings schneiden, überprüfen usw.?

    Hallo,
    da ich in letzter Zeit ein wenig C++ lern hab ich immer mehr das Problem, dass ich darin irgendwelche Strings manipulieren muss. Also zerschneiden (z.b. auslesen aus einer Datei, nach leerzeichen in einzellne Strings packen) die dann überprüfen, ob sie Zahlen sind usw (gibts da was womit ich die per regexp überprüfen kann) und so sachen halt.
    Jetzt fehlt mir da nur eine gute Anleitung dazu, wie ich das mache, ich hab schon länger gesucht, allerdings noch nicht so wirklich was gutes gefunden.

    Kann mir da wer eine gute Seite empfehlen?

    Danke,
    Sid

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Noe.. aber was brauchst du konkret?
    Wenn du sowas wie explode bei php suchst, guck halt in die PHP-Sourcen.

    Ist zwar C, sollte aber umso leichter nachzubauen sein.

    Gruß
    Kai

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.01.2005
    Beiträge
    20
    Nunja, ich will halt da mal die Grundlagen lernen da ich mich da noch ziemlich schwer tu, bzw. halt das ganze sehr hässlich programmier
    Ich wollt halt richtig Dateien auslesen... Also auch überprüfen ob die Werte die da drinstehen ungefähr hinkommen. Und das halt ohne Qt, damit könnt ichs mittlerweile einigermaßen.

    Und ich wollt das eigentlich mit der String klasse machen, von daher hilft mir da c recht wenig.

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Nach Leerzeichen in einzeln Strings zerlegen ist sehr einfach, weil Leerzeichen das Standardtrennzeichen ist.

    Wenn du also mit >> variable aus einer Datei liest, bekommst du immer da nächste Wort.

    Oder du liest zuerst eine Zeile und dann mit einem stringstream daraus die Wörter.

    Bzw such mal nach der Boost Bibliothek, dort gibt es jede Menge nützliche Klasse, Templates und Algorithmen

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Zitat Zitat von Sid
    Und ich wollt das eigentlich mit der String klasse machen, von daher hilft mir da c recht wenig.
    Ich kann lesen. Trotzdem danke, dass du's nochmal erwaehnst.
    Kannst du's?

    Nochmal, vielleicht leichter, verstaendlich:
    Du kannst das "explode" von PHP ganz einfach in C++ schreiben.
    Auch mit std::string. Und geht sogar leichter als in C. Versuch's einfach mal.

  6. #6
    Registrierter Benutzer
    Registriert seit
    11.01.2005
    Beiträge
    20
    Hmm, ich denke, irgendwie reden wir aneinander vorbei

    Ich muss sagen, ich kann weder php, noch weiß ich was explode macht...
    Ich wollt auch eher was fertiges, das ganze ist schon groß genug. Und halt irgendwie eine kleine Einführung zu den ganzen Stringmanipulationen, wie man das richtig macht. Bisher hab ich mir noch immer irgendwas, und das funktioniert dann halt mehr oder weniger, ist aber oft ziemlich lang bzw. sicher unnötig kompliziert.

    Danke für das mit dem stringstream, das schau ich mir mal an, dann kann ich den code etwas besser machen. Bisher such ich noch mit find mach dem leerzeichen.

    Aber eine konkrete Frage hab ich: Wie schau ich nach, ob sich ein String problemlos nach int konvertieren lässt (mach ich mit atoi)? Ich würds ja per regexp machen, aber ich hab noch nichts in den standardlibs dazu gefunden und ich will nicht unbedingt noch was extra benutzen.

  7. #7
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Du wirst doch wohl ne Funktion von C nach C++ "portieren" koennen.

    explode: http://www.php.net/manual/de/function.explode.php

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Code:
    #include <iostream>
    #include <string>
    #include <sstream>
    
    using std::string;
    using std::stringstream;
    using std::cout;
    using std::endl;
    
    int string2int(const string& text, bool& ok)
    {
        stringstream stream;
        stream << text;
    
        int number = 0;
        stream >> number;
    
        ok = !stream.fail() && stream.eof();
    
        return number;
    }
    
    int main(int argc, char** argv)
    {
         for (int i = 1; i < argc; ++i)
         {
             bool ok;
             cout << "input: '" << argv[i] << "' -> number: "
                  << string2int(string(argv[i]), ok);
             cout << " (" << (ok ? "ok" : "not ok") << ")" << endl;
         }
    
         return 0;
    }
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •