我在Qt Creator(社区)5.5.1工作。例如,我有
QString的string = “44°36'14.2 \”N,33°30'58.6 \“ E,0m”
。我知道,我必须解析它,但我不知道如何,因为我从来没有遇到像这样的问题。从我们的字符串中我想得到一些其他较小的字符串:
cgt = “44”; cmt = “36”; cst = “14.2”
cgg = “33”; cmg = “30”; csg = “58.6”
我的工作方式我该怎么办? 我需要真正的代码。感谢。
答案 0 :(得分:1)
最简单的启动方式是string.split(' ')
- 这将产生由空格字符(' '
)分隔的字符串组件的列表。如果您确定字符串的格式始终与此格式完全相同,则可以先删除所有特殊字符(°
等)。
然后分析得到的QStringList
。同样,如果格式是固定的,您可以检查列表项的数量是否与预期数量匹配,然后将度数设为list[0]
,将分钟设为“list [1]”,依此类推。
另一个替代方法是使用QRegExp
来解析字符串(根据正则表达式将其拆分为子字符串),但我发现它对于split
同样有用的用例来说太复杂了。
答案 1 :(得分:0)
"我需要代码"不是你应该问的那种问题,所以关于" gimme knowledge"不是"做我的工作"的问题。一个好问题应该证明你努力解决问题,所以人们可以告诉你你做错了什么。你的问题不仅没有任何这样的努力,而且即使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;
}