Anzeige:
Ergebnis 1 bis 7 von 7

Thema: c++ string zeilenweise lesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.07.2005
    Beiträge
    16

    c++ string zeilenweise lesen

    Ich hab in c++ einen großen String jeweils mit \n getrennt, wie kann ich den am besten Zeilenweise einlesen?
    Mein aktueller Versuch sieht so aus, bescheert mir aber einen segfault.

    Code:
    string analyzefine(string * buffer)
    	string resbuff;
    	string locbuff= *buffer;
    	while(!locbuff.empty())
    	{
    		string akt= string(locbuff,0,locbuff.find('\n'));
    		mache dieses und jenes
    
    		}
    	locbuff= string(locbuff,locbuff.find('\n')+1,locbuff.length());
    	}

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Am einfachsten geht das wohl mit einem Stringstream; daraus kannst du dann genau wie das auch bei std::cin funktioniert zeilenweise einlesen.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Verwende die Funktion getline(inputstream,string):
    http://gcc.gnu.org/onlinedocs/libstd...estd.html#a645
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  4. #4
    Registrierter Benutzer
    Registriert seit
    03.07.2005
    Beiträge
    16
    Von Stringstream höre ich jetzt zum ersten mal.

    Hat jemand zufällig ein paar Funktionen dafür (besonders das reinschreiben) aufzählen oder einen Link geben?
    Mit google finde ich nämlich nur was zu file streams.

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Von Stringstream höre ich jetzt zum ersten mal.

    Hat jemand zufällig ein paar Funktionen dafür (besonders das reinschreiben) aufzählen oder einen Link geben?
    Ja. Z.b.
    http://msdn.microsoft.com/library/de...ream_class.asp
    http://www.dinkumware.com/manuals/re...h=sstream.html

    Mit google finde ich nämlich nur was zu file streams.
    Das überrascht mich stark. Ich finde auf der ersten Ergebnisseite bereits den Link zu Microsofts Dokumentation.
    Es ist auch gerade ein Grund für die Existenz von C++ Iostreams, dass du *nicht* extra lernen musst, wie man in einen Filestream und wie in einen Stringstream schreibt. Das geht beides mal, im Prinzip, auf die gleiche Weise.

  6. #6
    Registrierter Benutzer
    Registriert seit
    03.07.2005
    Beiträge
    16
    Irgendwie geht noch nicht die Erleuchtung bei mir auf. Besonders da ich vermute, dass das ein Template ist.

    Könnte jemand bitte kurz einen Beispiel Code produzieren? Mit Header und allem.

    Danke schonmal im vorraus.

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Irgendwie geht noch nicht die Erleuchtung bei mir auf. Besonders da ich vermute, dass das ein Template ist.
    Ja und nein, wenn man von Stringstream spricht kann eigentlich sowohl ein Template als auch keines gemeint sein.
    "std::stringstream" ist z.B. kein Template, aber "std::basic_stringstream" ist eines. std::stringstream ist nämlich die Spezialisierung von std::basic_stringstream, welche durch "typedef basic_stringstream<char> stringstream;" definiert ist. Das ist soweit übrigens alles der MSDN-Doku zu entnehmen.

    Könnte jemand bitte kurz einen Beispiel Code produzieren? Mit Header und allem.
    Ja, könnte ich. Aber wenn du die Forensuche benutzt, findest du sowas bereits. Z. b. im Topic "[C++] int to string".

    Hier nochmal meine beiden Standard-Links:
    http://www.icce.rug.nl/documents/cpp.shtml (Die C++-Annotations, eine Art Tuturial, hat auch etwas zu Iostreams)
    http://www.parashift.com (Die C++ FAQ Lite von Marshall Cline)

    Eine gutes Buch ist natürlich auch nicht zu verachten.

Lesezeichen

Berechtigungen

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