我正在尝试编写一个处理INI文件的小程序,以便在后续项目中使用。首先要将其加载到内存中并缩小其大小。 因此,其中vLine是包含文件内容的向量。
for (unsigned int i = 0; i < vLine.size(); i++)
{
if (!vLine[i].find(';', 0))
{
vLine[i].erase();
}
}
打印vLine后,我将得到一些空格,这些空格曾经是以分号开头的行所在的位置,例如:
1.
2. property
3. property
4.
5. property
使用resize()似乎会从列表中删除最后一个元素,而不是删除这些空的部分。当我使用erase()删除只包含空格的行时,同样存在这个问题。
是否可能在保留vLine顺序的同时删除这些空元素?
(很抱歉我没有使用迭代器。)
vLine[i].erase()
所做的,对吧?调用vLine.erase()
因为它从vector
中擦除。然后重新写出文件。一个惯用的方法是使用 C++ 的 erase-remove 惯用法,尽管你需要使用<algorithm>
中的std::remove_if
来使用条件。 - wkl