QString - 使用地理坐标解析 QString
QString - parsing QString with geoordinates
我在Qt Creator(社区)5.5.1工作。例如,我有
string="44° 36' 14.2\" N, 33° 30' 58.6\" E, 0m"
的QString。我知道,我必须解析它,但我不知道如何解析,因为我从未遇到过这样的问题。从我们的字符串中,我想得到一些其他较小的字符串:
我cgt = "44";CMT ="36";CST ="14.2"
cgg = "33";CMG ="30";南方电网 ="58.6"
必须怎么做才能按照我说的方式工作我的程序?
我需要真正的代码。谢谢。
最简单的
开始方法是string.split(' ')
- 这将产生由空格字符(' '
)分隔的字符串组件列表。如果您确定字符串将始终像这样格式化,则可以首先删除所有特殊字符(°
等)。
然后分析结果QStringList
。同样,如果格式是固定的,您可以检查列表项的数量是否与预期的数量匹配,然后获得list[0]
度,将分钟作为"list[1]",依此类推。
另一种选择是使用 QRegExp
来解析字符串(根据正则表达式将其拆分为子字符串),但我发现它对于split
同样工作的用例来说太复杂了。
"
我需要代码"不是你应该问的那种问题,SO是关于"gimme知识"而不是关于"做我的工作"的问题。一个好的问题应该表明你努力解决问题,这样人们就可以告诉你你做错了什么。你的问题不仅缺乏任何这样的努力,而且即使 Devopia 为你做了一半的工作,你也没有花费任何努力。请记住这一点,以备将来提问时使用。
struct G {
double cgt, cmt, cst, cgg, cmg, csg;
};
G parse(QString s) {
QStringList list = s.split(QRegExp("[^0-9.]"), QString::SkipEmptyParts);
G g;
g.cgt = list.at(0).toDouble();
g.cmt = list.at(1).toDouble();
g.cst = list.at(2).toDouble();
g.cgg = list.at(3).toDouble();
g.cmg = list.at(4).toDouble();
g.csg = list.at(5).toDouble();
return g;
}
相关文章:
- 将 Qvector<uint8_t> 转换为 QString
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 比较两个节点坐标的最佳方法是什么?
- 在 OpenGL 中将笛卡尔世界坐标转换为球面局部坐标
- 将 hh:mm:ss.zzz 时间 QString 转换为毫秒的单行函数?
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在C++中获取坐标?
- 如何将 x.y 坐标的值存储在不同的数组中
- 如何将鼠标坐标转换为"mm"
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- 为什么使用 QString::right 在字符串开头省略逗号?
- Qt:更新 QString 时自动生成的代码失败
- 如何将 QString 的 QList 分配给列表视图?
- QString - 使用地理坐标解析 QString
- 如何将坐标转换为QString