Sto tentando di creare un piccolo programma che elabora i file INI, da utilizzare in un progetto successivo, prima riducendone le dimensioni una volta caricato in memoria. Così,Rimozione elementi vuoti da un vettore di stringhe
dove vline è un vettore contenente il contenuto del file
for (unsigned int i = 0; i < vLine.size(); i++)
{
if (!vLine[i].find(';', 0))
{
vLine[i].erase();
}
}
al momento della stampa vline, sarò lasciato con spazi dove una volta una linea che inizia con un punto e virgola esisteva, come
1.
2. property
3. property
4.
5. property
L'uso di resize() sembra rimuovere l'ultimo elemento dall'elenco piuttosto che rimuovere queste parti vuote. Lo stesso problema esiste dove rimuovo le righe che contengono solo spazi bianchi con cancella().
È possibile rimuovere questi elementi vuoti mantenendo l'ordine di vLine?
(Scuse per non usare iteratori in questo.)
Re: (scuse per non usare iteratori in questo.) - Perché non usare iteratori? –
Mancanza di conoscenza per quanto riguarda il loro uso corretto. Sembra (sembrava?) Possibile farlo senza di loro. – JGrey
Puoi rimuovere le linee dal vettore piuttosto che cancellare semplicemente il contenuto della stringa (che è ciò che 'vLine [i] .erase()' fa, no? Chiama 'vLine.erase()' dato che cancella dal 'vector' Quindi riscrivi il file in uscita, un modo idiomatico per farlo è l'espressione [erase-remove idiom] di C++ (http://en.wikipedia.org/wiki/Erase-remove_idiom), sebbene tu voglia usare 'std :: remove_if 'da '' per usare un condizionale –
birryree