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

TSG*_*TSG 1 c++ qt iterator qtcore qstringlist

我试图遍历a QStringList,打印字符串,然后从列表中删除它.我似乎无法找到一个有效的QStringList方法!例如:

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

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

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

小智 7

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

 QMutableStringListIterator i(list); // pass list as argument
 while (i.hasNext()) { 
     i.remove();                      // delete current item
 }
Run Code Online (Sandbox Code Playgroud)