我有一个字符串,我试图在分隔符的第一个实例上拆分它,在本例中为“~”。这些是我正在调用的电话:
QString line = "hello~world~how~are~you";
QStringList list = line.split("~", Qt::SplitLimit::KeepEmptyParts, Qt::CaseSensitive);
理想情况下我会得到:
list.at(0); = "hello"
list.at(1); = "world~how~are~you"
但是这会引发错误。
.... 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"
关于c++ - Qt Creator 尝试拆分 QString 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75647950/