QSettings:是不是可以始终保存用双引号括起来的字符串?
Posted
技术标签:
【中文标题】QSettings:是不是可以始终保存用双引号括起来的字符串?【英文标题】:QSettings: is it possible to always save strings wrapped in double quotes?QSettings:是否可以始终保存用双引号括起来的字符串? 【发布时间】:2020-02-21 09:44:49 【问题描述】:这是一个简单的测试:
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】:我认为你可以,但有点喜欢自己做。您可以创建一个方法来确保您的字符串被正确引用
QString quoted(QString word)
return "\"" + word.replace('\\', "\\\\").replace('"',"\\\"").replace('\t', "\\t") + "\""
该方法添加引号,并转义一些特殊字符。 然后您可以在列表中的任何字符串上调用它。如果您要经常使用它,您可以从 QSetting 继承以覆盖方法 setValue 并使其自动化。
请注意,方法 QSettings::value 也需要一些修改才能取消引用。
【讨论】:
感谢您的回复。不幸的是,当settings->setValue
被调用时,字符串被保存为转义字符:value2=\"string\"
。以上是关于QSettings:是不是可以始终保存用双引号括起来的字符串?的主要内容,如果未能解决你的问题,请参考以下文章