1

我正在尝试遍历 a 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如果我在列表中途删除一个项目可能会失败)
4

1 回答 1

7

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

 QMutableStringListIterator i(list); // pass list as argument
 while (i.hasNext()) { 
     i.remove();                      // delete current item
 }
于 2013-09-29T14:47:09.677 回答