酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也

以下是使用 C++ 实现提取`$gprmc`报文中经纬度值的代码: ```cpp #include <iostream> #include <string> // 提取经纬度值的函数 void extractLatLong(const std::string &message) { int commaCount = 0; std::string lat = ""; std::string longt = ""; for (char c : message) { if (c == ',') { commaCount++; if (commaCount == 3) { // 提取纬度值 while (message[++c]!= ',') { lat += message[c]; } } if (commaCount == 5) { // 提取经度值 while (message[++c]!= ',') { longt += message[c]; } } } } std::cout << "纬度: " << lat << ", 经度: " << longt << std::endl; } int main() { std::string message = "$gprmc,123456.789,a,3015.2345,n,12030.5678,e,200.5,150.5,010523,10.5,e,a"; extractLatLong(message); return 0; } ``` 注意点: 1. 输入的报文格式需要严格符合给定的规则,否则可能导致提取错误。 2. 代码中未对提取的经纬度值进行有效性校验。 3. 可以考虑添加错误处理机制,以应对异常情况。 [2025-01-08 03:43:54 | AI写代码神器 | 385点数解答]

相关提问