Qt 如何轻松地将Q字符串转换为点(x,y,z)?
我有一个结构点Qt 如何轻松地将Q字符串转换为点(x,y,z)?,qt,qstring,Qt,Qstring,我有一个结构点 struct Point { double x; double y; double z; } 想把它转换成QString“(x的值,y的值,z的值)”并把它转换回来吗?有简单的方法吗?我对正向转换的理解是 QString PointToString( const Point& pt ) { return QString("(%1, %2, %3)").arg(pt.x).arg(pt.y).arg(pt.z); } 我不知道如何把它转
struct Point
{
double x;
double y;
double z;
}
想把它转换成QString“(x的值,y的值,z的值)”并把它转换回来吗?有简单的方法吗?我对正向转换的理解是
QString PointToString( const Point& pt )
{
return QString("(%1, %2, %3)").arg(pt.x).arg(pt.y).arg(pt.z);
}
我不知道如何把它转换回来
Point StringToPoint( const QString& s )
{
// How?
}
谢谢。使用正则表达式:
QString s = "(2, 5.3, 1e8)";
QRegExp regexp("\\(([^,]+), ([^,]+), ([^)]+)\\)");
if (regexp.exactMatch(s)) {
double x = regexp.capturedTexts()[1].toDouble();
double y = regexp.capturedTexts()[2].toDouble();
double z = regexp.capturedTexts()[3].toDouble();
qDebug() << x << y << z;
}
QString s=“(2,5.3,1e8)”;
QRegExp regexp(“\\([^,]+),([^,]+),([^)]+)\”;
如果(regexp.exactMatch){
double x=regexp.capturedTexts()[1].toDouble();
双y=regexp.capturedTexts()[2].toDouble();
double z=regexp.capturedTexts()[3].toDouble();
qDebug()我不熟悉正则表达式。QString(double)
的正则表达式是什么,比如'km(1000)'?非常感谢!它可能类似于“km\([^)]+\”
。