⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 secondmsg.cpp

📁 简单报文模拟发送
💻 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 + -