fstream + getline fehler bei verwendung von string!
-
Hi,
benutz std::vector ( eine Art Array, welches seine Größe dynamisch selbst verwaltet ), dann hast du dein Problem mit deiner unbestimmten Größe schonmal nicht.
#include <fstream> #include <vector> #include <string> using namespace std; int main() { vector<string> stringarray; ifstream file("kA.kA"); string tmp = ""; while( getline( file, tmp ) ) stringarray.push_back(tmp); }Danach kannst du gewohnt mit stringarray[ index ] arbeiten ...
-
Versuchs mal mit
f.getline((stringarray[1].c_str(),5);Du kannst natürlich nicht ein Stringobjekt in einen char Zeiger casten. c_str() gubt Dir einen Zeiger auf den Null terminierten String
Mfg Mav
-
danke ich werd alles mal ausprobiern
-
aber .c_str() gibt einen const-char-Zeiger zurück.
Also kann getline() da nich reinschreiben.Afaik kann man der getline-Methode gar keinen String übergeben. Du brauchst also ein char-Array.
Du müsstest es also so ungefähr machen:vector<string> stringarray; fstream f("kA.kA", ios::in); while(!f.eof()) { char buf[256]; // vllt. anpassen f.getline(buf, 256); stringarray.push_back(buf); };
-
Beunutze die std::getline(..) Funktion (Header: <string>).
-
ok danke

-
@halo: Alles andere ist nur gefrickel und kein schönes C++. Mach dich mit dem vertraut, was ich geschrieben habe und bleib dabei. Bei unklare Stellen im Code kannst du ja nachfragen

-
ok
-
ich hab das ganze jetzt in eine klasse eingebaut, um den quelltext ein wenig ordentlicher zu gestalten!
allerdings kommt jetzt dieser fehler hier:error C2864: 'Cfile::tmp' : only static const integral data members can be initialized within a classdas bezieht sich auf diese zeile:
string tmp = "";wie kann man diesen fehler umgehn??
-
ok hab die lösung gefunden!!
einfach erst im konstruktor deklarieren!