接听QString replace characters outside of quotes我偶然发现了一种奇怪的行为。
执行这段代码:
foreach (const QString &key, json.keys()) {
const QJsonValue &value(json.value(key));
qDebug() << key << value.toString().right(key.length());
}
使用这个 json
,A:
QJsonObject json {
{"thing1", "thing1value1"},
{"thing2", "thing2value2"},
{"thing3", "thing3value3"}
};
和这个 json
,B(注意 thing2
之后的逗号):
QJsonObject json {
{"thing1", "thing1value1"},
{"thing2", "thing2,value2"},
{"thing3", "thing3value3"}
};
在这两种情况下都会产生:
"thing1" "value1"
"thing2" "value2"
"thing3" "value3"
不应该是:
"thing1" "value1"
"thing2" ",value2"
"thing3" "value3"
在第二种情况下,B?
最佳答案
Returns a substring that contains the
n
rightmost characters of the string.
[特别强调我的]
因为 key 字符串的长度是6
,那么最右边的6
个字符将被返回,给你"value2"
没有逗号。
如果你想得到没有前导键的字符串,你可以使用 mid
相反:
value.toString().mid(key.length())
对于您的用例,我宁愿建议 midRef
,因为实际上不需要创建子字符串的拷贝。
关于c++ - 为什么在使用 QString::right 的字符串开头省略了逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52402665/