赞助

删除string类型字符串中指定字符串段

1.实现背景

  在插入list行时用邮件的MessageID给对应行命名。

  在回复全部邮件时,收件人变为之前收件人中出去“自己”同时加入之前发件人,抄送人还是之前的抄送人,密送人不用管,直接不用带。

  在“回复全部”按钮响应函数里面

    CListUI* pList = static_cast<CListUI*>(m_PaintManager.FindControl(_T("middle_comlumn_header1")));//拿到list控件指针
            int index = pList->GetCurSel();//获取当前选中行
            CControlUI* pControl = pList->GetItemAt(index);//获取对应行控件指针
            string strMsgID = UTF(pControl->GetName().GetData());//获取对应行控件名字

            const char* gszFile ="WebMail.sqlite";
            CppSQLite3DB *pDB=new CppSQLite3DB;
            pDB->open(gszFile);

            string strSql;
            strSql="SELECT mFrom,mTo,mCc,mSubject FROM Email where mMessageID ='";//在数据库里面查到对应mMessageID记录
            strSql+= strMsgID;
            strSql+="'";
            CppSQLite3Query query=pDB->execQuery(strSql.c_str());

            string StrFrom,StrTo,StrCC,StrSub,temp;
            StrFrom = query.getStringField("mFrom");
            StrTo=query.getStringField("mTo");
            temp=m_Imap.ms_User;//要除去的目标字符串
    
            int pos = StrTo.find(temp,0);//找到目标字符串所在位置
            StrTo=StrTo.substr(0,pos-1)+StrTo.substr(pos+temp.length(),StrTo.length()-(pos+temp.length()));
            StrTo+=";";
            StrTo+=StrFrom;

            StrCC=query.getStringField("mCc");

            StrSub=query.getStringField("mSubject");
            StrSub.insert(0,"RE: ");
            query.finalize();
            pDB->close();

            vector<string> data;
            data.push_back(StrTo);
            data.push_back(StrCC);
            data.push_back(StrSub);


            CWriteWnd* pWrite=new CWriteWnd(_T("WriteWnd.xml"),m_Imap,data);

            pWrite->Create(NULL, _T("WriteWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE | WS_EX_ACCEPTFILES);
            pWrite->CenterWindow();
            pWrite->ShowModal();

posted @ 2014-07-01 20:22  车臣  阅读(9297)  评论(0编辑  收藏  举报