Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何轻松地将Q字符串转换为点(x,y,z)?_Qt_Qstring - Fatal编程技术网

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\([^)]+\”