我知道这是一个简单的问题,可以在python中轻松完成,但是我不记得要查找的关键字。
我有一个QString
,QString line = "id: John"
,我想用定界符:
拆分它,并将它们存储在两个QString中,而不是QStringList
QString line = "id: John"
QStringList elements = line.split(':');
我想要一个类似这样的衬里,以便我可以用含义名称来引用它们,而不是elements[0]
和elements[1]
。
QString title, name = line.split(":");
答案 0 :(得分:0)
我不确定您说的是什么意思
我可以用含义名称代替
withStyles
来引用它们,并且makeStyles
因为无论如何,当您要退回一对elements[0]
时,都必须打开elements[1]
的包装
您可能会编写这样的函数
QStringList
您可以将其用作
QString
答案 1 :(得分:0)
正如chehrlic的评论所暗示的,要获得一个不错的单行代码,您需要一个小的辅助函数,该函数将QStringList
转换为可以与structured binding一起使用的东西。您不能直接使用QStringList
,因为结构化绑定是在编译时发生的,并且列表是大小可变的动态结构。整个机制都需要C ++ 17,因此,如果您使用QMake项目,则应将CONFIG += c++17
添加到您的pro文件中。
#include <QStringList>
#include <QDebug>
#include <utility> // for std::make_pair
auto getPair(const QStringList &strings) {
// Since your strings seem to have extra whitespace, I added trimmed call.
// The value method nicely returns default value if index is out of range.
return std::make_pair(strings.value(0).trimmed(),
strings.value(1).trimmed());
}
void main() {
auto input = QStringLiteral("id: John");
auto [title, name] = getPair(input.split(':'));
qDebug() << input << "->" << title << name; return 0;
}