首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何初始化QStrings的常量QSet

如何初始化QStrings的常量QSet
EN

Stack Overflow用户
提问于 2016-12-18 06:44:32
回答 2查看 2.2K关注 0票数 1

对于一个小测试,我想用一些使用C++存储为QString的令牌初始化一个QSet。在C++中有没有一种简单的方法来做这样的事情?

代码语言:javascript
复制
#include <iostream>
#include <QSet>
#include <QString>

const QString TK_IDENT = "ID";
const QString TK_DESC  = "DESC";
const QString TK_SPEC  = "SPEC";

// THIS STUFF AS A ONELINER
const QSet<QString> TOKEN(TK_IDENT, TK_DESC, TK_SPEC);

int main(int argc, char *argv[]) {
 bool NOK = TOKEN.contains("TEST");
 bool OK  = TOKEN.contains("IDENT");
 std::cout << NOK << std::endl;
 std::cout << OK << std::endl;
 return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2016-12-18 20:57:51

如果您很不幸,并且没有支持C++11的环境,您可以创建一个列表

代码语言:javascript
复制
const QSet<QString> TOKEN = QSet<QString>::fromList(QStringList() << TK_IDENT << TK_DESK << TK_SPEC);
票数 3
EN

Stack Overflow用户

发布于 2016-12-20 01:39:09

还要注意,标记应该是QString字面值,以免过早地悲观代码。QStringLiteral就是它在盒子上所说的:一种机制,它使用编译器在编译时生成QString的内部数据结构,而不是在运行时经历utf8到utf16的转换和字符串实例化:

代码语言:javascript
复制
const auto TK_IDENT = QStringLiteral("ID");
const auto TK_DESC  = QStringLiteral("DESC");
const auto TK_SPEC  = QStringLiteral("SPEC");

const QSet<QString> TOKEN{TK_IDENT, TK_DESC, TK_SPEC};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41203784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档