代码之家  ›  专栏  ›  技术社区  ›  Fátima Villa González

将文本文件读入结构

  •  0
  • Fátima Villa González  · 技术社区  · 10 年前

    我试图从.txt文件中读取一些信息,然后将其存储在一个结构中,但我不知道如何仅选择所需的单词。

    .txt文件如下

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

    .txt中的一行如下所示:

    18[@deniseee]:你好,你好吗?2016-04-26.23:37:58

    所以,问题是我有一个结构列表

    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中,将下一句话存储到内容中,将日期存储到小时中。

    我该怎么做?

    感谢任何帮助

    非常感谢。

    1 回复  |  直到 10 年前
        1
  •  0
  •   Vlad Feinstein    10 年前

    问题是:你正在写这个文件,所以它很容易被人阅读,而你应该写它,所以很容易被你的程序加载。

    您使用空格分隔元素,而这些元素中很可能出现空格。

    我建议使用文本中不太可能使用的符号,例如管道“|”。此外,我会首先编写固定大小的元素:

    18 | 2016-04-26.23:37:58 |丹尼西|你好吗?

    然后,您可以读取整行,将其拆分到这些管道符号上,并加载到结构字段中。