我在QT上遇到分割功能问题。我有一个文本文件,第一行是这样的:
10,100;100,100;100,100;100,200;100,200;300,200;300,200;300,350;300,350;250,350;250,350;250,300;250,300;200,300;200,300;200,400;200,400;10,400;10,400;10,100
这里每两个数字代表一个带有x和y值的点,分号表示分数。每个分号后都有一个新观点。
我想要做的是按元素分割这些数字;
元素0:10
要素1:100
要素2:100
要素3:100
...
我已设法做到这一点,但文本文件中没有任何分号或冒号。
文本文件的第一行:
10 100 100 100 100 200 300 200 300 350 250 350 250 300 200 300 200 400 10 400 10 100
我就这样做了:
void Dialog::readFile()
{
QFile file("/Path/of/the/text/file/Data.txt");
if(!file.open(QIODevice::ReadOnly)) {
QMessageBox::information(0, "info", file.errorString());
}
QString line = file.readLine();
qDebug() << "line:" << line << "\n";
QStringList list = line.split(" ");
double element;
for(int i = 0; i < list.size(); i++) {
element = list.at(i).toDouble();
points_.append(element);
qDebug() << "element:" << element << "\n";
}
}
此代码的输出为:
line: "10 100 100 100 100 200 300 200 300 350 250 350 250 300 200 300 200 400 10 400 10 100\r"
element: 10
element: 100
element: 100
element: 100
element: 100
element: 200
element: 300
element: 200
....
我想以完全相同的方式做到这一点。有什么建议吗?
PS:我是QT的新手,所以请考虑一下。
答案 0 :(得分:1)
您可以使用正常表达式QString::split
重载QRegExp
或下一个QRegularExpression
:
QStringList list = line.split(QRegExp(",|;")); // ",|;" matches ',' or ';'
QRegExp
被称为弃用,但它可以在这里完成工作。