2016-04-27 14 views
0

Ich versuche einige Informationen aus einer TXT-Datei zu lesen und dann in einer Struktur zu speichern, aber ich weiß nicht, wie ich es tun soll, nur die Wörter, die ich brauche.Eine Textdatei in eine Struktur lesen

Die .txt ist die folgende

fstream write_messages("C:\\Messages.txt"); 

Eine Zeile in der .txt wie folgt aussieht:

18 [@deniseeee]: hallo, wie geht es dir? 2016-04-26.23: 37: 58

Also, die Sache ist, dass ich eine Liste von strutures haben

list<Message*> g_messages; 

wo

struct Message { 
    static unsigned int s_last_id; // keep track of IDs to assign it automatically 
    unsigned int id; 
    string user_name; 
    string content; 
    string hour; 

    Message(const string& a_user_name, const string& a_content) : 
     user_name(a_user_name), content(a_content), id(++s_last_id), hour(currentDateTime()) 

    { 
    } 
    Message(){} 

}; 

ich so um die Datei lesen möchten, dass ich kann die Nummer in die ID der Liste, das Wort zwischen "[@" und "]:" in den Benutzernamen, den nächsten Satz in den Inhalt und das Datum in die Stunde speichern.

Wie kann ich das tun?

Jede Hilfe ist willkommen

Danke

+0

Haben Sie die Kontrolle darüber, wie diese Datei geschrieben wird? Sie sollten etwas verwenden, das leicht zu analysieren ist: csv, json, xml, etc. –

+0

Diese Datei wurde geschrieben mit –

+0

Diese Datei wurde geschrieben mit 'write_messages.open (" Messages.txt ", ios_base :: app); \t write_messages << (* last_iterator) -> id << "[@" << Benutzername << "]:" << Inhalt << "" << (* last_iterator) -> Stunde << "\ n "; write_messages.close(); ' –

Antwort

0

Das Problem ist: Sie diese Datei schreiben, so dass es leicht ist, die von einer Person zu lesen, während Sie es schreiben sollte, so dass es einfach ist, zu laden durch Ihre Programm.

Sie verwenden Räume, um Ihre Elemente zu trennen, während Räume innerhalb dieser Elemente sehr gut passieren können.

Ich würde vorschlagen, ein Symbol zu verwenden, das wahrscheinlich nicht im Text verwendet wird, z. B. die Pipe '|'. Außerdem würde ich zuerst Elemente mit fester Größe schreiben:

18 | 2016-04-26.23: 37: 58 | deniseeee | hallo, wie geht es dir?

Dann können Sie gesamte Zeile lesen, teilen Sie es auf diese Pipe-Symbole und laden Sie in Ihre Struktur Felder.

+0

Vielen Dank! Ich habe es versucht und es ist definitiv viel einfacher !! –