gpt4 book ai didi

c++ - ","的 QSettings::IniFormat 值作为 QStringList 返回

转载 作者:行者123 更新时间:2023-11-30 01:50:20 25 4
gpt4 key购买 nike

我正在使用 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

main.cpp

#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")

换句话说,对带有特殊字符的字符串使用引号或在列表中手动加入字符串。如果前者在您的控制之下,它会好得多,因为在字符串中使用“特殊”字符时,您通常应该以正确的引号为目标。

关于c++ - ","的 QSettings::IniFormat 值作为 QStringList 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27557727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com