我有一个文本文件,如下所示:
VariableA = 10 VariableB = 20 VariableC =“Hello World”
代码工作正常,但我的麻烦是在“”之间获取文本字符串。
QStringList Data;
Data << "VariableA = " << "VariableB = " << "VariableC = ";
QStringList Values;
int VariableA;
int VariableB;
QString VariableC;
foreach(const QString &DataToFind, Data) {
QRegExp DataExpression(DataToFind);
int DataStart = DataExpression.indexIn(TextToFind);
if(DataStart >= 0) {
int DataLength = DataExpression.matchedLength();
int ValueSize = 1;
while(TextToFind.at(DataStart + DataLength + ValueSize) != QChar(' ')) {
ValueSize++;
}
QStringRef DataValue(&TextToFind, DataStart + DataLength, ValueSize);
Values += DataValue.toString();
DataStart = DataExpression.indexIn(description, DataStart + DataLength);
} else {
continue;
}
}
VariableA = Values[0].toInt();
VariableB = Values[1].toInt();
VariableC = Values[2];
问题是VariableC上的文本可以在其中包含空格和/或“(双引号)。所以我上面发布的从文件中检索变量的方法是没用的。因为它使用”“来达到文件中变量的结尾。
如何检索双引号内的全文?
答案 0 :(得分:0)
QStringList Data;
Data << "A = " << "B = " << "X = ";
int A;
int B;
QString X;
foreach(const QString &DataToFind, Data) {
QRegExp DataExpression(DataToFind);
int DataStart = DataExpression.indexIn(TextToFind);
if(DataStart >= 0) {
int DataLength = DataExpression.matchedLength();
int ValueSize = 1;
while(TextToFind.at(DataStart + DataLength + ValueSize) != QChar(' ')) {
ValueSize++;
}
QStringRef DataValue(&TextToFind, DataStart + DataLength, ValueSize);
DataStart = DataExpression.indexIn(description, DataStart + DataLength);
} else {
continue;
}
}
这是有效的。