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. :-)
Hab die Schnipsel aus dem Internet und etwas zusammen geschrieben.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; }
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:
Ich hoffe, ihr könnt mir helfen.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
Vielen Dank im Voraus.
Lesezeichen