卡住了,需要帮助从矢量列表返回时间跨度

stuck, Need help returns time span from vector list

本文关键字:列表 返回 时间跨度 帮助      更新时间:2023-10-16

我有一个消息列表,每次添加消息时我都设置一个时间戳。我试图创建一个函数,将返回在一定时间内添加的消息,也匹配一个字符串。然而,我现在卡住了,任何帮助都非常感激,下面是我的代码:

struct BarMessage
{
    int Length;
    const char *message;
    time_t TimeAdded;
};
struct Ba
{
    vector<BarMessage> Messages;
    void AddMessage(const char *message, int Length)
    {
        BarMessage m;
        m.message = message;
        m.Length = Length;
        time(&m.TimeAdded); // set time ?
        Messages.push_back(m);
    }
    BarMessage & GetMessageWithin(string pattern, int span = 200)
    {
        //Time.Now?
        time_t now;
        time(&now);
        if (this->Messages.size() > 0)
        {
            for (auto & messages : this->Messages)
            {
                //Stuck here!!!
                //I want to return the BarMessage of a message
                //that was added within 200 (span)
                //that also contains the string patten inside it
            }
        }
    }
};

首先在BarMessage中使用string

struct BarMessage
{
    int Length;
    string message;
    time_t TimeAdded;
};

有关查找匹配字符串http://www.cplusplus.com/reference/string/string/find/的更多信息。你为什么用char*而不是string,有什么好的理由吗?您确定要从这个函数返回一个引用吗?为什么传递pattern作为值而不是作为const引用?

BarMessage & GetMessageWithin(const string& pattern, int span = 200)
{
    //Time.Now?
    time_t now;
    time(&now);
    if (this->Messages.size() > 0)
    {
        for (auto & messages : this->Messages)
        {
            if (now - messages.TimeAdded <= 200 && 
                messages.message.find(pattern) != std::string::npos) {
                //then return this message
            }
        }
    }
}