0

次のようなテキストファイルがあります。

変数A = 10 変数B = 20 変数C = "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 のテキストにスペースや " (二重引用符) を含めることができることです。そのため、ファイルから変数を取得するために上で投稿した方法は役に立ちません。" " を使用して変数の末尾に到達するためです。ファイルで。

二重引用符内の全文を取得するにはどうすればよいですか?

4

1 に答える 1

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;
    }
}

これでうまくいきます。

于 2012-12-23T13:33:41.710 に答える