QSettings: возможно ли всегда сохранять строки, заключенные в двойные кавычки? - PullRequest
0 голосов
/ 21 февраля 2020

Вот простой тест:

QSettings *settings = new QSettings("test.ini", QSettings::IniFormat);

QStringList values;
values << "stringwith'quote"
       << "\"stringwithdoublequotes\""
       << "string"
       << "string with spaces"
       << "stringwith\nnewline"
       << "stringwith,comma"
       << "stringwith;semicolon"
       << ";"
       << ","
       << "'"
       << "',";

for (int i=0; i<values.count(); i++){
    settings->setValue("value" + QString::number(i), values[i]);
}

Вот как выглядит .ini:

[General]
value0=stringwith'quote
value1=\"stringwithdoublequotes\"
value2=string
value3=string with spaces
value4=stringwith\nnewline
value5="stringwith,comma"
value6="stringwith;semicolon"
value7=";"
value8=","
value9='
value10="',"

Можно ли принудительно сохранить все строки в двойном формате? цитаты?

1 Ответ

0 голосов
/ 21 февраля 2020

Я думаю, что вы можете, но вроде как сделать это самостоятельно. Вы можете создать метод, обеспечивающий правильную кавычку вашей строки

QString quoted(QString word)
{
    return "\"" + word.replace('\\', "\\\\").replace('"',"\\\"").replace('\t', "\\t") + "\""
}

Этот метод добавляет кавычки и экранирует некоторые специальные символы. Затем вы можете вызвать его в любой строке списка. Если вы собираетесь использовать его часто, вы можете унаследовать от QSetting переопределить метод setValue и сделать его автоматическим c.

Осторожно, метод QSettings :: value также нуждается в некоторой адаптации для удаления кавычек те.

...