有时需要魔术弦,例如访问INI文件,注册表,REST API等时...
我们假设一个JSON密钥“用户名”:
如何定义此选项...
#define JSON_USERNAME "username"
#define JSON_USERNAME (QString("username"))
#define JSON_USERNAME (QStringLiteral("username"))
QString const JSON_USERNAME("username")
QStringLiteral const JSON_USERNAME("username")
QLatin1String const JSON_USERNAME("username")
或7。:
QString JSON_USERNAME() {
static QString const str("username");
return str;
}
需要与括号一起使用:JSON_USERNAME()
...仅举几例。
让我们假设这个简单的用例:
// (cpp-file-)global definition of JSON_USERNAME = ("username")
bool hasUsername(QJsonObject &jo) {
return jo.contains(JSON_USERNAME);
}
QString getUsername(QJsonObject &jo) {
return jo.value(JSON_USERNAME).toString();
}
void setUsername(QJsonObject &jo, QString const &name) {
jo.insert(JSON_USERNAME, name);
}
所以有:
考虑到QString("...")
执行from-UTF-8转换并且QString
被隐式共享,上述每种方法都有其缺点:
4.-6。具有未指定实例化的全局变量
是否存在(特定于Qt的)方法
答案 0 :(得分:0)
我无法参考全球指南,但会投票赞成。 1。
原因:config应该保持为config。 出于以下原因,应避免将任何类型的配置与可执行代码混合使用: