Sono bloccato su un compito a casa. Devo leggere il testo da un file, assegnare ogni parola alla memoria, quindi utilizzare un puntatore per inviarlo a vector<string*>
. Il mio programma continua a sovrascrivere il vettore con la nuova parola dal file invece di aggiungerlo. Non riesco a capire perché questo sta accadendo.Vettore C++ con puntatore
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
void WordFunctions(string *pstr, vector<string*> &words)
{
words.push_back(pstr);
}
int main(){
ifstream file;
vector<string*> a;
string word;
int w =0;
file.open("word.txt");
while (!file.eof())
{
w++;
file >> word;
WordFunctions(&word, a);
}
file.close();
for (int i=0;i<10;i++){
cout<<(*a[i])<<" ";
delete a[i];
}
system ("pause");
}
Accidenti .. il tuo compito ti costringe a usare un vettore di puntatori e non spiega perché questa sia un'idea orribile? Solo così sai, ora hai l'onere di dislocare manualmente ogni elemento del tuo vettore, annullando un enorme vantaggio che il vettore ti offre. * a volte * è necessario memorizzare puntatori nel vettore (non spesso!) e in tal caso si utilizzerà un puntatore intelligente, ad esempio 'unique_ptr' o qualcosa di simile. Assicurati di dirlo al tuo insegnante la prossima volta che lo vedi. –