Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

1

28.01.2011, 14:34

C++ Probleme beim Verarbeiten von Daten aus einem CharArray

Sehr geehrtes Forum,
Ich habe ein Problem :

Was ich will :
Ich will den Inhalt einer Datei in mein CharArray laden.
Dann will ich den Inhalt teilen, mit dem trennungszeichen '\n' und diese einzel strings in einem vector speichern.

Mein Code :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//  Daten aus Datei lesen
    ifstream data(credits_path.c_str(),ios::in);

    data.seekg (0, ios::end);
    int length = data.tellg();
    data.seekg (0, ios::beg);
    length--;

    char* text = new char[length+1];
    data.read(text,length);
    data.close();
    text[length] = '\0';

//  Daten verarbeiten
    string sToken;
    vector<string> tokens;
    for(int i = 0;i<length;i++)
    {
        if(text[i]=='\n')
        {
            tokens.push_back(sToken+'\0');
            sToken = "";
        }
        else
        {
            sToken = sToken + text[i];
        }
        cout << text[i];
    }
    delete [] text;

//  Daten auswerten
    Message m;

    //  Titel hinzufügen
    m.content = tokens[0];
    m.type = 0;
    messages.push_back(m);

    //  Daten hinzufügen
    for(int i = 1;i<tokens.size()-1;i++)
    {
        m.content = tokens[i].substr(2);
        m.type    = atoi(tokens[i].substr(0,1).c_str());
        messages.push_back(m);
    }


Was wirklich passiert :
Wenn ich mir das Array vor der Ausgabe mal ausgeben lasse, kommt zwar der inhalt der datei in die Console, doch noch einige zusatzzeichen, die bei jedem mal anders sind.
Dementsprechend hat der nachfolgende Programmteile Probleme mit der weiterverarbeitung.

Meine Frage und Bitte ans Forum :
Was mache ich denn falsch? Kann mir bitte jemand helfen?

M.f.G. Developer_X
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

2

28.01.2011, 14:48

Irre ich mich oder ist dass das selbe wie hier in dem Thread?
Problem beim Öffnen von Dateien

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

3

28.01.2011, 15:04

Ja aber hier geht es ja um die Textverarbeitung, nicht um das einlesen des Textes
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

28.01.2011, 15:10

verwende std::getline -.-
was ist so schwer daran zu verstehen?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

5

28.01.2011, 15:33

Gut, ich habe es versucht, doch ich verstehe nicht wie das mit getLine gehen soll, da braucht man doch einen input stream, ich habe aber doch nur strings

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
//  Daten verarbeiten
    string text_string = text;
    string token;
    vector<string> tokens;

    while(text_string.find("\n")!='npos')
    {
        getline(text_string,token,'\n');
        text_string = text_string.substr(token.size(),text_string.size());
        tokens.push_back(token);
    }

    delete [] text;


Was soll ich jetzt machen?
Wie kann ich getline richtig einsetzten?

M.f.G: Developer_X
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

28.01.2011, 15:34

natürlich hast du einen input stream
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

7

28.01.2011, 15:45

Und der wäre, ein stringstream? oder was?
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

28.01.2011, 15:46

zeile 2: ifstream data(credits_path.c_str(),ios::in);
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

9

28.01.2011, 16:05

Ah, ok danke euch allen!
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Werbeanzeige