我有一个字符串,我试图在分隔符的第一个实例上拆分,在本例中为“~”。这些是我正在拨打的电话:
QString line = "hello~world~how~are~you";
QStringList list = line.split("~", Qt::SplitLimit::KeepEmptyParts, Qt::CaseSensitive);
理想情况下我会得到:
list.at(0); =“你好”
列表(1); =“世界~怎么样~是~你”
但是这会引发错误。
.... error: 'Qt::SplitLimit' has not been declared
.... In function 'int qMain(int, char**)':
我在 Microsoft Windows 10 上使用 Qt Creator 6.4.2 版,我正在尝试用 C++ 编写代码。我正在使用 CMake 构建系统。我在项目中包含了 QtCore,所以这不应该是问题。
我不知道这是否是拆分 QString 的最佳方式,所以如果有人有更好的建议,我很乐意尝试。 与此同时,我想我会完全拆分它。使用第一个条目,然后将其余条目重新附加在一起。
split
方法的第二个参数是 Qt::SplitBehavior
类型,如评论中所述,它是一个老式枚举,而不是 C++11 枚举类。
QStringList QString::split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
所以你应该使用:
QStringList list = line.split("~", Qt::KeepEmptyParts, Qt::CaseSensitive);
但是,QString 的 split 方法在 sep 出现的地方将字符串拆分为子字符串,并返回这些字符串的列表。 您不能使用
split
方法部分拆分字符串。
要仅在分隔符第一次出现时拆分,请使用
indexof
方法,如下所示:
auto idx = line.indexOf('~');
auto part= line.mid(0, idx);
auto rest = line.mid(idx+1);
qDebug() << part;
qDebug() << rest;
输出:
"hello"
"world~how~are~you"