я использую QSettings
проанализировать INI-файл: QSettings cfg(path, QSettings::IniFormat);
Когда я получу значение QVariant qv = cfg.value("title");
содержит запятую, вариант содержит QStringList
вместо QString
title=foo => QString
title=foo,bar => QStringList
Как я всегда могу получить строки или, по крайней мере, получить оригинальную строку ( title=foo,bar
)
У вас есть как минимум два способа решения этой проблемы, все они представлены ниже:
title="foo,bar"title_unquoted=foo,bar
#include <QSettings>
#include <QDebug>
int main()
{
QSettings settings("test.ini", QSettings::IniFormat);
// Original issue
qDebug() << settings.value("title_unquoted");
// 1st solution: join the strings
qDebug() << settings.value("title").toStringList().join(',');
// 2nd solution: use quotes in the ini file
qDebug() << settings.value("title");
return 0;
}
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
qmake && make && ./main
QVariant(QStringList, ("foo", "bar"))
"foo,bar"QVariant(QString, "foo,bar")
Другими словами, используйте кавычки для строк со специальными символами или присоединяйте строки вручную в списке. Первое гораздо лучше, если оно находится под вашим контролем, так как вы обычно должны стремиться к правильному цитированию при использовании «специальных» символов в строках.