Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 21 von 21

Thema: String operationen

  1. #16
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Ich hole den Thread mal wider aus der Versenkung.
    Vorab, es ist mein erstes Programm und wird auch wohl mein letztes sein.
    Muss ich nur für die Arbeit machen, deswegen mein letztes und erstes in C++.
    Aber ihr könnt mir bestimmt helfen. :-)
    Code:
    #include <iostream>
    #include <fstream>
    #include <strstream>
    #include <string>
    #include <list>
    #include <sstream>
    using namespace std;
    
    void split (string & text, string & separators, list<string> & words)
    {
       int n = text.length();
       int start, stop;
       start = text.find_first_not_of(separators);
       while ((start >= 0) && (start < n))
       {
          stop = text.find_first_of(separators, start);
           if ((stop < 0) || (stop > n))
           {
            stop = n;
           }
          words.push_back(text.substr(start, stop - start));
          start = text.find_first_not_of(separators, stop+1);
          return words
       }
    }
    
    int main()
    {
    	char zeile [500]; // Zeile max 121 Zeichen
    	string Seite[1000]; // Datei Max 10000 Zeilen
    	ifstream dateiLese ("input.txt"); // Eingabe Datei
    	ofstream dateiSchreibe ("output.txt"); // Ausgabe Datei
    	if (dateiLese)
    	{
    		int i=0;
    		seperator=";";
    		// solange die Zeile nicht leer ist
    		while(dateiLese.getline (zeile, 500))
    		{
    			// Zeile lesen
    			Seite[i]=zeile;
    
    			// Hier kann die Zeile bearbeitet werden
    			dateiSchreibe << split (Seite[i],";","Hier weis ich auch nicht, was ich eintragen soll") << "\n";
    
    			// Zeile in ausgabe.txt schreiben
    			dateiSchreibe << i << " " << Seite[i] << "\n";
    			i++;
    		}
    		dateiLese.close (); // Datei schliessen
    		dateiSchreibe.close(); // Datei schliessen
    	}
    	return 0;
    }
    Hab die Schnipsel aus dem Internet und etwas zusammen geschrieben.
    Leider klappt die Splittfunktion nicht und ich habe keinen blassen warum nicht.
    Verstehe auch nicht wirklich alles was das steht.
    Die Datei input.txt besteht aus mehreren Zeilen, deren Felder durch Delimter ";" getrennt sind.
    Diese will ich nun splitten und in die Datei output.txt untereinander ausgeben
    und wenn eine Zeile fertig ist, dann nochmal die komplette Zeile darunter.
    Hab auch schon gegoogelt. Da finde ich immer den gleichen Code für die splitt-Funktion,
    aber es funtzt einfach nicht.
    Ich benutze bcc5.5 auf Komandozeilenebene und als Editor habe ich Textpad im Einsatz.
    Folgender Fehler bingt mir das Teil beim Compilieren:
    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    C:\CPP\test.cpp:
    Error E2467 C:\CPP\test.cpp 24: 'split(string &,string &,list<string,allocator<string> > &)' cannot return a value in function split(string &,string &,list<string,allocator<string> > &)
    Error E2378 C:\CPP\test.cpp 24: Return statement missing ; in function split(string &,string &,list<string,allocator<string> > &)
    Error E2451 C:\CPP\test.cpp 36: Undefined symbol 'seperator' in function main()
    Warning W8030 C:\CPP\test.cpp 44: Temporary used for parameter 'separators' in call to 'split(string &,string &,list<string,allocator<string> > &)' in function main()
    Warning W8030 C:\CPP\test.cpp 44: Temporary used for parameter 'words' in call to 'split(string &,string &,list<string,allocator<string> > &)' in function main()
    Error E2064 C:\CPP\test.cpp 44: Cannot initialize 'list<string,allocator<string> > &' with 'char *' in function main()
    Error E2342 C:\CPP\test.cpp 44: Type mismatch in parameter 'words' (wanted 'list<string,allocator<string> > &', got 'char *') in function main()
    Error E2094 C:\CPP\test.cpp 44: 'operator<<' not implemented in type 'ofstream' for arguments of type 'void' in function main()
    *** 6 errors in Compile ***

    Prozess beendet mit Exit-Code 1
    Ich hoffe, ihr könnt mir helfen.
    Vielen Dank im Voraus.
    Gruss
    Rene

  2. #17
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo,

    der Code schaut etwas wüst aus.
    Schau dir mal http://www.oopweb.com/CPP/Documents/...g-HOWTO-7.html unten an. Da gibt es genau, was du brauchst.

    Gruß, Florian
    Ein gebrechlich Wesen ist der X-Server.

  3. #18
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Super, Danke.
    Klappt genau so wie ich es brauche.
    Nochmals Danke.
    Gruss
    Rene

  4. #19
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Ich müsste nochmal eure Hilfe in Anspruch nehmen. :-)
    Habe einen String, den von Position1 bis Position2 auslesen will
    und in einen String speichern.
    Code:
    string str = "meinHausistbunt"
    Nun brauche ich Befehl, so wie unter einer Bash "cut".
    Position1=5
    Position2=8
    Ergebnis=Haus

    Hab hier auch mittlerweile mehrere Bücher liegen, da steht sowas nicht drin.
    Hab strlen, strcpy, strcmp und strcut gefunden, aber mehr ist in allen Büchern nicht drin.
    Im Netz hab ich leider auch nix gefunden.
    Ich hoffe, hier könnt mir da weiterhelfen.
    Vielen Dank schon mal im Voraus.
    Gruss
    Rene

  5. #20
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    string::substr sollte doch sein was du willst.
    Code:
    string substr ( size_t pos = 0, size_t n = npos ) const;
    du musst nur anstatt Anfangs- und Endposition Anfangsposition und Länge angeben.

    HTH jeebee

    PS: ich nehme an es geht immer noch um C++.
    PS2: die Funktionen die du erwähnst sind C- und nicht C++-Funktionen und erwarten ein const char * als Eingabe und nicht einen string.
    PS3: strcut hab ich in meinen man-pages nicht gefunden.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  6. #21
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Supi. Das war genau was ich suchte.
    Der Link ist ja echt Spitze.
    Direkt in die Favs gelegt. :-)
    Ich danke dir.
    Gruss
    Rene

Lesezeichen

Berechtigungen

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