2016-04-27 85 views
0

我試圖從.txt文件中讀取一些信息,然後將其存儲在結構中,但我不知道如何才選擇我需要的單詞。將文本文件讀取到結構中

中的.txt是在.TXT以下

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

的線路是這樣的:

18 [@deniseeee]答:你好,你怎麼樣? 2016-04-26.23:37:58

那麼,事情是,我有strutures的

list<Message*> g_messages; 

其中

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(){} 

}; 

我想讀的文件,這樣的列表我可以將數字存儲到列表的id中,「[@」和「]:」之間的單詞存入user_name,下一個單詞存入內容,日期存入小時。

我該怎麼做?

任何幫助表示讚賞

謝謝

+0

您是否可以控制該文件的寫入方式?你應該使用一些容易解析的東西:csv,json,xml等。 –

+0

這個文件是用 –

+0

編寫的。這個文件是用'write_messages.open(「Messages.txt」,ios_base :: app)編寫的。 (* last_iterator) - > id <<「[@」<< User_name <<「]:<< << content <<」<< <<(* last_iterator) - > hour <<「\ n 「; write_messages.close();' –

回答

0

的問題是:你正在寫這個文件,所以很容易被人閱讀,而你應該寫它,所以它很容易通過加載您程序。

您正在使用空格分隔元素,而空格可能發生在這些元素內。

我會建議使用不太可能在文本中使用的符號,例如管道'|'。首先,我會寫出固定尺寸的元素:

18 | 2016-04-26.23:37:58 | deniseeee |你好,你好嗎?

然後您可以讀取整行,將其分割到這些管道符號上並加載到您的結構字段中。

+0

謝謝!我已經嘗試過,它絕對容易得多! –