void CGpsData::RMC(std::string m_szRMCInfData) /*RMC信息段处理函数*/
{
/*定义一个关联容器与他的一个关键字字符串数组来存储与处理数据*/
std::map<std::string, std::string>mGpsDate;
std::string szDataName[12] = { "m_szTime","m_szSigQua","m_szLatitude","m_szLatDir","m_szLongitude","m_szLonDir",
"m_szGroRat","m_szGroDir","m_szDate","m_szDeclination"," m_szDecDirection","m_szMode" };
int position = 0,TemPos=0;
do
{
position=m_szRMCInfData.find(",");
mGpsDate[szDataName[TemPos]]=m_szRMCInfData.substr(0, position);/*将符合要求的子字符串写入相应的关联容器*/
m_szRMCInfData.erase(0, position + 1); /*将提取过的数据删除*/
++TemPos;
} while (position!=-1);
Time(mGpsDate["m_szTime"]); /*时间获取*/
Latitude(mGpsDate["m_szLatitude"]); /*纬度*/
LatDirection(mGpsDate["m_szLatDir"]);/*纬度半球*/
Longitude(mGpsDate["m_szLongitude"]);/*经度*/
LonDirection(mGpsDate["m_szLonDir"]);/*经度半球*/
GroundRate(mGpsDate["m_szGroRat"]);/*地面速度*/
GroDirection(mGpsDate["m_szGroDir"]);/*航向*/
Date(mGpsDate["m_szDate"]); /*UTC日期 date的moth和day要去掉0*/
/*将个字段信息写入相应小字符串*/
return;
}
通过循环可以实现所有数据的获取(即使数据为空)