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

📄 midreader.cpp

📁 Dijkstra算法及demo实现
💻 CPP
字号:
#include "StdAfx.h"
#include "MidReader.h"

CMidReader::CMidReader(void)
{
	m_pObject=NULL;
	m_nObjectLen=0;
}

CMidReader::~CMidReader(void)
{
}

long CMidReader::GetObjectLength(const char *szPointFile)
{
	long lLen=0;
	CStdioFile file;
	if(file.Open(szPointFile,CFile::modeRead|CFile::shareDenyNone))
	{
		CString strTmp=_T("");
		while(file.ReadString(strTmp))
			if(strTmp!=_T("")) lLen++;
		file.Close();
	}
	return lLen;
}

long CMidReader::ReadPoint(const char *szPointFile,MemSearchObject *pObject,int nObjectLen)
{
	long lLen=0;
	CStdioFile file;
	if(file.Open(szPointFile,CFile::modeRead|CFile::shareDenyNone))
	{
		CString strTmp=_T("");
		char szTmp1[32],szTmp2[32];
		while(file.ReadString(strTmp))
		{
			if(strTmp!=_T(""))
			{
				if(lLen>=nObjectLen) break;
				//39.9062,116.388,"1"
				sscanf(strTmp,_T("%[^,],%[^,],\"%d\""),
					szTmp1,
					szTmp2,
					&pObject[lLen].m_OwnerObject.id);

				pObject[lLen].m_OwnerObject.x=atof(szTmp1);
				pObject[lLen].m_OwnerObject.y=atof(szTmp2);

				lLen++;
			}
		}
		file.Close();
	}
	m_pObject=pObject;
	m_nObjectLen=lLen;

	return lLen;
}

long CMidReader::ReadLine(const char *szLineFile)
{
	long lLen=0;
	CStdioFile file;
	if(file.Open(szLineFile,CFile::modeRead|CFile::shareDenyNone))
	{
		long id1,id2,p3;//p3暂不使用
		CString strTmp=_T("");
		while(file.ReadString(strTmp))
		{
			if(strTmp!=_T(""))
			{
				//313,236,0
				sscanf(strTmp,_T("%d,%d,%d"),&id1,&id2,&p3);
				ConnectPoint(id1,id2);
				lLen++;
			}
		}
		file.Close();
	}

	return lLen;
}

bool CMidReader::ConnectPoint(long id1,long id2)
{
	if(m_pObject==NULL || m_nObjectLen<=0) return false;
	MemSearchObject *p1=NULL,*p2=NULL;

	for(long i=0;i<m_nObjectLen;i++)
	{
		if(m_pObject[i].m_OwnerObject.id==id1)
			p1=&m_pObject[i];
		else
		if(m_pObject[i].m_OwnerObject.id==id2)
			p2=&m_pObject[i];

		if(p1!=NULL && p2!=NULL)
			break;
	}
	if(p1!=NULL && p2!=NULL)
	{
		CDijkstraSearch::ConnectObject(p1,p2,true);
		return true;
	}

	return false;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -