Salve a tutti, scrivo qui perché ho questo problema, non riesco a venirne fuori
Allora... ho necessità di tokenizzare delle frasi e per ogni frase memorizzare i token delle parole in un vector e per ogni vector con i token memorizzarlo in un vector di vector... se li gestisco come vector di string riesco nel mio intento, però vorrei usare i char*, quindi gestisco un vector<vector<char *> >.
Dopo l'operazione, se faccio delle stampe di controllo, mi rendo conto che non è dovrebbe essere, mi stampa cose sballate e non capisco perché sicuramente sto facendo casino con i puntatori...
Questo è il programma:
#include <cstring>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<vector<char*> > allPhrases;
vector<char *> phrase;
string line;
char* token;
while(getline(cin, line)) {
if(line == "-1")
break;
cout << endl;
token = strtok((char*)line.c_str(), " ");
while(token != NULL) {
phrase.push_back(token);
token = strtok(NULL, " ");
} // while
allPhrases.push_back(phrase);
phrase.clear();
for(vector<vector<char*> >::iterator it1 = allPhrases.begin(); it1 != allPhrases.end(); it1++) {
for(vector<char*>::iterator it2 = (*it1).begin(); it2 != (*it1).end(); it2++)
cout << *it2 << " ";
cout << endl;
} // for.
} // while.
return 0;
} // main.
Per ogni inserimento di un vector, stampo l'intera matrice.
Faccio un esempio, se inserisco questo:
aa aa
bb bb
cc cc cc cc
dd dd dd dd
-1
dovrebbe stampare questo:
aa aa
aa aa
bb bb
aa aa
bb bb
cc cc cc cc
aa aa
bb bb
cc cc cc cc
dd dd dd dd
invece stampa questo:
aa aa
bb bb
bb bb
ap>
ap>
cc cc cc cc
ap>
ap>
dd dd dd dd
dd dd dd dd
Stranamente l'ultimo vector inserito lo stampa correttamente, ma gli altri no grazie per l'attenzione.