Estoy intentando crear un pequeño programa que procese archivos INI, para usarlo en un proyecto posterior, primero reduciendo su tamaño una vez cargado en la memoria. Por lo tanto,Extracción de elementos vacíos de un vector de cadenas
donde vline es un vector que contiene el contenido del archivo
for (unsigned int i = 0; i < vLine.size(); i++)
{
if (!vLine[i].find(';', 0))
{
vLine[i].erase();
}
}
al imprimir vline, I le dejó con espacios donde una vez una línea que comienza con un punto y coma existido, tales como
1.
2. property
3. property
4.
5. property
El uso del tamaño() parece eliminar el último elemento de la lista en lugar de eliminar estas partes vacías. El mismo problema existe cuando elimino líneas que solo contienen espacios en blanco con borrar().
¿Es posible eliminar estos elementos vacíos mientras se conserva el orden de vLine?
(disculpas para no usar iteradores en esta.)
Re: (Disculpas por no usar iteradores en este.) - ¿Por qué no usar iteradores? –
Falta de conocimiento sobre su uso correcto. Parece (¿parece?) Posible hacer esto sin ellos. – JGrey
Puede eliminar las líneas del vector en lugar de simplemente borrar el contenido de la cadena (que es lo que 'vLine [i] .erase()' hace, no? Llamar a 'vLine.erase()' ya que eso borra del 'vector' Luego, vuelva a escribir el archivo. Una manera idiomática de hacerlo es C++ [borrar idioma] (http://en.wikipedia.org/wiki/Erase-remove_idiom), aunque le gustaría usar 'std :: remove_if 'from' 'para usar un condicional –
birryree