使用迭代器从QStringlist中删除项目

时间:2013-09-29 14:30:39

标签: c++ qt iterator qtcore qstringlist

我正在尝试遍历QStringList,打印字符串,然后将其从列表中删除。我似乎无法找到有效的QStringList方法!例如:

for ( QStringList::Iterator it = commandList.begin(); it != commandList.end(); ++it ) {
    out << "Processed command: " << *it << endl;
    *it.erase();
}

给出编译错误:'QList :: Iterator'没有名为'erase'的成员

  1. 如何删除迭代器当前指向的项目?
  2. 在循环中移除它是否安全? (因为如果我在列表中间删除项目,++it可能会失败)

1 个答案:

答案 0 :(得分:7)

另一个解决方案是使用QMutableStringListIterator,它可以用作任何其他迭代器,但它具有您正在寻找的“删除”方法。

 QMutableStringListIterator i(list); // pass list as argument
 while (i.hasNext()) { 
     i.remove();                      // delete current item
 }