QString - 使用地理坐标解析 QString

QString - parsing QString with geoordinates

本文关键字:QString 坐标      更新时间:2023-10-16

我在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;
}