📄 secondmsg.cpp
字号:
#include "StdAfx.h"
#include "SecondMsg.h"
#include <stdio.h>
#include <string.h>
///默认构造函数
SecondMsg::SecondMsg(char* src,char* dest)
:MsgHeader(src,dest)
,m_nFirstData(NULL)
,m_nSecondData(0)
,m_nThirdData(0)
{
}
///普通构造函数
SecondMsg:: SecondMsg(char* src,char* dest,char* first,long second,long third)
:MsgHeader(src,dest)
,m_nFirstData(NULL)
,m_nSecondData(second)
,m_nThirdData(third)
{
if(NULL !=first && strlen(first)>0)
{
m_nFirstData=new char[strlen(first)+1];
if(NULL!=m_nFirstData)
{
strcpy(m_nFirstData,first);
}
}
}
///拷贝构造函数
SecondMsg::SecondMsg(const SecondMsg &sm)
:MsgHeader(sm)
,m_nFirstData(NULL)
,m_nSecondData(sm.m_nSecondData)
,m_nThirdData(sm.m_nThirdData)
{
assert(sm.m_nFirstData!=NULL);
m_nFirstData=new char[strlen(sm.m_nFirstData)+1];
strcpy(m_nFirstData,sm.m_nFirstData);
}
///重载赋值运算符
SecondMsg& SecondMsg::operator =(const SecondMsg &sm)
{
//m_nMsgID=sm.m_nMsgID;
///在重载赋值运算符时,一定要注意判断是否是将自身赋值给自身
if (&sm==this)
{
return *this;
}
MsgHeader::operator =(sm);//调用父类的运算符重载,给父类部分赋值
if (m_strSrcAddr!=NULL)
{
delete[] m_strSrcAddr;
}
assert(sm.m_nFirstData!=NULL);
m_strSrcAddr=new char[strlen(sm.m_strSrcAddr)+1];
if (NULL!=m_strSrcAddr)
{
strcpy(m_strSrcAddr,sm.m_strSrcAddr);
}
if (m_strDestAddr!=NULL)
{
delete[]m_strDestAddr;
}
m_strDestAddr=new char[strlen(sm.m_strDestAddr)+1];
if (NULL!=m_strDestAddr)
{
strcpy(m_strDestAddr,sm.m_strDestAddr);
}
return *this;
}
SecondMsg::~SecondMsg(void)
{
if (NULL!=m_nFirstData)
{
delete[]m_nFirstData;
}
}
void SecondMsg::SetMsgData(char * first,long second,long third)
{
if(NULL !=first && strlen(first)>0)
{
m_nFirstData=new char[strlen(first)+1];
if(NULL!=m_nFirstData)
{
strcpy(m_nFirstData,first);
}
}
m_nSecondData=second;
m_nThirdData=third;
}
char* SecondMsg::toString(char** p)
{
char* str=NULL;
MsgHeader::toString(&str);
if(NULL !=str)
{
int f_len=strlen(m_nFirstData);
*p=new char[strlen(str)+1+f_len+20];
sprintf(*p,"%s%s%d%d",str,m_nFirstData,m_nSecondData,m_nThirdData);
delete[] str;
}else
{
*p=new char[30];
*p="error:can not find message head";
//strcpy(*p,"error:can not find message head");
}
return *p;
}
bool SecondMsg::savetofile(const char *path)
{
try
{
char str[512]={0};
sprintf(str,"%d",m_nMsgID);
WritePrivateProfileString("Header","messageID",str,path);
WritePrivateProfileString("Header","SourseAddress",m_strSrcAddr,path);
WritePrivateProfileString("Header","DestinationAddress",m_strDestAddr,path);
WritePrivateProfileString("Data","firstdata",m_nFirstData,path);
memset(str,0,512);
sprintf(str,"%d",m_nSecondData);
WritePrivateProfileString("Data","seconddata",str,path);
memset(str,0,512);
sprintf(str,"%d",m_nThirdData);
WritePrivateProfileString("Data","thirddata",str,path);
return true;
}catch(...)
{
return false;
}
}
MsgHeader* SecondMsg::loadfromfile(const char *path)
{
char srs[512]={0};
GetPrivateProfileString("Header","SourseAddress","",srs,512,path);
char des[512]={0};
GetPrivateProfileString("Header","DestinationAddress","",des,512,path);
char pstr[512]={0};
GetPrivateProfileString("Data","thirddata","",pstr,512,path);
if (strlen(pstr)!=0)
{
char f_data[512]={0};
GetPrivateProfileString("Data","firstdata","",f_data,512,path);
char s_data[512]={0};
GetPrivateProfileString("Data","seconddata","",s_data,512,path);
MsgHeader *msg=new SecondMsg(srs,des,f_data,atol(s_data),atol(pstr));
return msg;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -